文章

16

粉丝

0

获赞

66

访问

3.5k

头像
数字游戏 - 中南大学 题解:
P1934 中南大学2023年机试题
发布于2025年3月18日 23:32
阅读数 156

首先分析题意,即要判断给定数能否用一组数凑出,可以利用贪心的思想,首先我们将可以用来凑数的数字从小到大排(从大到小排同理,懒得写cmp而已),而后从最大的开始用起,如果最大的数已经超过最大的数则不可能用于凑数,进行下一轮循环,用一个for循环依次将每一个数用一遍,直至m=0为止。

具体代码实现如下:

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int t;
  cin >> t;
  for (int i = 0; i < t; i++)
  {
    int m, n;
    cin >> n >> m;
    int a[1000];
    for (int i = 0; i < n; i++)
    {
      cin >> a[i];
    }
    sort(a, a + n);                  // 将输入的数进行升序排序
    int cnt = 0;                     // 用以统计数字量
    for (int i = n - 1; i >= 0; i--) // 从大到小依次进行对比
    {
      if (m >= a[i]) // 大于m的数不可能用于凑m
      {
        cnt = (m / a[i]) + cnt; // 商即是要使用a[i]的次数
    &nbs...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发