题解 | # C 现在是,学术时间 (I)#2023牛客寒假算法基础集训营1

现在是,学术时间 (I)

https://ac.nowcoder.com/acm/contest/46800/C

C 现在是,学术时间 (I)

这题不太理解,稀里糊涂做出来,有没有大佬解释一下

思路是

不考虑引用量为0的情况,然后有几篇就是几(感觉好离谱啊,但就是过了)

#include <iostream>
using namespace std;

int main() {
    int t,n;
    int a[100005]={0};
    cin>>t;
    while(t--){
        int m=0;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>a[i];
            if(a[i]==0){
                m++;
            }
        } 
        cout<<n-m<<endl;
    }    
}


class HelloWorld {
    public static void main(String[] args) {
        System.out.println("还没写,反正也差不多"); 
    }
}
编程比赛题解 文章被收录于专栏

各类编程比赛题解

全部评论
你这做法简单来说就是,因为n篇论文,n个教授,每个人平均分到的论文最大为1篇,你只要保证每个人分到的论文引用数不为0,每个人分到的论文一定是可行的
3 回复 分享
发布于 2023-01-16 22:06 浙江
我的思路是文章按引用数从大到小排序,人用优先队列从小到大排序,文章每次给队列排头那个(如果给得出去),同时记录答案就可以了。我这个应该是贪心,你这个怎么可以我也不太清楚....
1 回复 分享
发布于 2023-01-16 21:22 江西
你可以抽象出来,这些数分成若干个组,某一个组内有x个数,且这些数都大于等于x,然后你会发现答案的上限为n,n又等价于有n个组,且每个组内只有一个元素,特判a_i=0。
1 回复 分享
发布于 2023-01-16 21:13 山东

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务