1 条题解

  • 1
    @ 2023-07-08 12:25:22

    这道题作为div3的第三道题,难度还是比较简单的,与算法无关,即使是编程小白也是可以解决的。难点在于代码量大,需要多加练习。

    对于每个人要找到他自己的最优策略,这就是一个排序+遍历的问题。
    遍历的过程中,考虑当前题目能不能做?目前的罚时如何计算?

    衡量每个人分数的标准是什么?做题数量+罚时。本人用的是vector+pair遍历。

    //
    //  main.cpp
    //  2
    //
    //  Created by 汪汪队 on 2023/7/8.
    //
    
    #include<iostream>
    #include<algorithm>
    #include<set>
    #include<map>
    #include<queue>
    #include<vector>
    #define int long long
    using namespace std;
    
    void test(){
        
        int n,m,t;
        cin>>n>>m>>t;
        
        vector<vector<int>>p(n);
        vector<pair<int,int>>s(n);
        
        for (int i=0; i<n; i++) {
            for (int j=0; j<m; j++) {
                int t; cin>>t; p[i].push_back(t);
            }
            sort(p[i].begin(),p[i].end());
            for (int j=1; j<p[i].size(); j++) {
                p[i][j]=p[i][j]+p[i][j-1];
            }
            for (int j=0; j<p[i].size(); j++) {
                if(p[i][j]<=t){
                    s[i].first++;
                    s[i].second+=p[i][j];
                }
            }
        }
        
        int ans=0;
        for (int i=1; i<s.size(); i++) {
            if(s[0].first>s[i].first) ans++;
            else if (s[0].first==s[i].first&&s[0].second<=s[i].second) ans++;
        }
        cout<<n-ans<<endl;
        return;
    }
    
    signed main() {
        ios::sync_with_stdio(0);
        cin.tie(0); cout.tie(0);
        
        int t;
        cin>>t;
        while (t--) {
            test();
        }
        
        return 0;
    }
    
    //ans=2;
    
  • 1

4-6 Rudolf and the Another Competition

信息

ID
1460
难度
7
分类
(无)
标签
(无)
递交数
37
已通过
9
通过率
24%
上传者