当前位置: 首页 > news >正文

P7557 [USACO21OPEN] Acowdemia S题解

[USACO21OPEN] Acowdemia S

题目描述

由于对计算机科学的热爱,以及有朝一日成为 「Bessie 博士」的诱惑,奶牛 Bessie 开始攻读计算机科学博士学位。经过一段时间的学术研究,她已经发表了 N N N 篇论文( 1 ≤ N ≤ 1 0 5 1 \leq N \leq 10^5 1N105),并且她的第 i i i 篇论文得到了来自其他研究文献的 c i c_i ci 次引用( 0 ≤ c i ≤ 1 0 5 0 \leq c_i \leq 10^5 0ci105)。

Bessie 听说学术成就可以用 h h h 指数来衡量。 h h h 指数等于使得研究员有至少 h h h 篇引用次数不少于 h h h 的论文的最大整数 h h h。例如,如果一名研究员有 4 4 4 篇论文,引用次数分别为 ( 1 , 100 , 2 , 3 ) (1,100,2,3) (1,100,2,3),则 h h h 指数为 2 2 2,然而若引用次数为 ( 1 , 100 , 3 , 3 ) (1,100,3,3) (1,100,3,3) h h h 指数将会是 3 3 3

为了提升她的 h h h 指数,Bessie 计划写至多 K K K 篇综述( 0 ≤ K ≤ 1 0 5 0 \leq K \leq 10^5 0K105),并在每篇综述中引用许多她曾经写过的论文。然而,由于页数限制,她至多可以在一篇综述中引用 L L L 篇论文( 0 ≤ L ≤ 1 0 5 0 \leq L \leq 10^5 0L105)。当然,一篇综述中她只能引用一篇论文至多一次(但是一篇论文可以在多篇综述中被引用)。

请帮助 Bessie 求出在写完这些综述后她可以达到的最大 h h h 指数。Bessie 不可以在一篇综述中引用她写的其他综述。

注意 Bessie 的导师可能会告知她纯粹为了提升 h h h 指数而写综述存在违反学术道德的嫌疑;我们不建议其他学者模仿 Bessie 的行为。

输入格式

输入的第一行包含 N N N K K K L L L

第二行包含 N N N 个空格分隔的整数 c 1 , … , c N c_1,\ldots, c_N c1,,cN

输出格式

输出最大可以达到的 h h h 指数。

样例 #1

样例输入 #1

4 4 1
1 100 1 1

样例输出 #1

3

提示

样例说明

在这个样例中,Bessie 可以写至多一篇综述。如果 Bessie 引用她的第一、第三、第四篇论文中的任意一篇,她的 h h h 指数会变为 2 2 2

测试点性质:
  • 测试点 1 ∼ 6 1 \sim 6 16 满足 N ≤ 100 N\le 100 N100
  • 测试点 7 ∼ 16 7 \sim 16 716 没有额外限制。
说明

供题:Dhruv Rohatgi

题解

题意分析:

首先,本题要求的是h 指数,可以用二分答案来做,最大里找最小。 当然在二分之前,先要把题中的c 数组排序。

现在关键就是 check 函数的问题。
我们可以定义一个变量s,来表示需要引用的论文数量;
循环1 到 n,计算还需引用几次第i 篇论文几次;
若引用次数大于题目中的K,则直接返回0,说明该答案不可行;
循环结束后判断 s 是否大于论文引用次数上限,若大于,返回 0,若小于或等于,返回 1。

#include<bits/stdc++.h>
using namespace std; 
long long n,m,k,a[100010];//最好用 long long,反正内存不会超bool check(int x){long long s=0;for(int i=1;i<=n;i++){if(a[i]<x){s+=x-a[i];if(x-a[i]>m) return 0;}if(s>m*k) return 0;if(i==x) return 1;}
}//判断函数,二分中最关键的部分bool cmp(const int &x,const int &y){return x>y;
}int main(int argc, const char * argv[]){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>m>>k;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+1+n,cmp);//快排函数int l=0,r=n;while(l<r){int mid=(l+r+1)/2;if(check(mid)) l=mid;else r=mid-1;}//二分模板cout<<l<<"\n";return 0;
}
//Written by Kevin ☑

http://www.mrgr.cn/news/35277.html

相关文章:

  • 【软考】多核CPU
  • 2024年9月23日---关于MyBatis框架(2)
  • 最新版C/C++通过CLion2024进行Linux远程开发保姆级教学
  • 毛竹泛基因组-文献精读52
  • 【代码随想录Day27】贪心算法Part01
  • 电商效果图渲染神器:轻松高效出图
  • gorm.io/sharding:改造,当查询条件中不包含分表键时,从自定义方法中获取对应的表进行查询
  • 【JVM】JVM执行流程和内存区域划分
  • 浅析Android中的View事件分发机制
  • 2024 年最新 Protobuf 结构化数据序列化和反序列化详细教程
  • 【alist】宝塔面板docker里的alist默认admin无法登录
  • 分享6个icon在线生成网站,支持AI生成
  • “被卷”还是“破卷”,咱有得选
  • 虚幻引擎的射线检测/射线追踪
  • 水墨风度——书圣故里书画名家晋京展亮相荣宝斋大厦
  • 【machine learning-17-分类(逻辑回归sigmod)】
  • YOLOX预测图片是无法保存
  • Vue|插件
  • `#include <vector>`
  • Unity图形用户界面!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。(万字解析)