z1075408183 2021-10-07 11:34 采纳率: 92.9%
浏览 57
已结题

提交题目之后 超时了 如何解决

t (1≤t≤105)
n and H (2≤n≤103,1≤H≤109)
n integers a1,a2,…,an (1≤ai≤109)


#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1005;
int n, H, a[maxn] = { 0 }, v = 1, times[maxn] = { 0 };//n为武器数量,H为血量,a[]为各武器攻击力,times为攻击次数
int t;//测试次数
int main() {

    cin >> t;
    for (int m = 1;m <= t;m++)
    {
        cin >> n >> H;
        for (int i = 0;i < n;i++) {
            cin >> a[i];//输入每个武器的攻击力

        }
        sort(a, a + n);//攻击力排序

        while (H > 0) {
            if (v == 1) {
                H -= a[n - 1];//用攻击最高的武器
                times[m - 1] += 1;
                v = 0;
            }
            else {
                H -= a[n - 2];//用次高的武器
                times[m - 1] += 1;
                v = 1;
            }
        }

    }
    for (int i = 0;i < t;i++) {
        cout << times[i] << endl;//输出攻击次数
    }
    return 0;
}
  • 写回答

2条回答 默认 最新

  • JaGuar_DeFrock_ 2021-10-07 11:37
    关注

    有帮助望采纳

     
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int maxn = 1005;
    int n, H, a[maxn] = { 0 }, v = 1, times[maxn] = { 0 };//n为武器数量,H为血量,a[]为各武器攻击力,times为攻击次数
    int t;//测试次数
    int main() {
        scanf("%d",&t);
        for (register int m = 1;m <= t;m++)
        {
            scanf("%d%d",&n,&H);
            for (register int i = 0;i < n;i++) {
                scanf("%d",&a[i]);//输入每个武器的攻击力
            }
            stable_sort(a, a + n);//攻击力排序
            while (H > 0) {
                if (v == 1) {
                    H -= a[n - 1];//用攻击最高的武器
                    times[m - 1] += 1;
                    v = 0;
                }
                else {
                    H -= a[n - 2];//用次高的武器
                    times[m - 1] += 1;
                    v = 1;
                }
            }
        }
        for (register int i = 0;i < t;i++) {
            printf("%d\n",times[i]);//输出攻击次数
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 创建了问题 10月7日