2021.8.14提高B组模拟6T2 + P7557 [USACO21OPEN] Acowdemia (二分)
Posted SSL_LKJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.8.14提高B组模拟6T2 + P7557 [USACO21OPEN] Acowdemia (二分)相关的知识,希望对你有一定的参考价值。
Acowdemia
输入样例
1.
4 4 1
1 100 1 1
2.
4 1 4
1 100 1 1
输出样例
1.
3
2.
2
解题思路
先将数据从大到小排序
就满足了单调性,可以用二分查找答案
check(判断)是否合法
AC代码
#include<algorithm>
#include<cstdio>
using namespace std;
int n,k,ll,l,r=100000,answer,a[100005];
bool cmp(int x,int y)
return x>y;
bool check(int x)//判断是否合法
long long ans=0;
for(int i=1;i<=x;i++)
if(a[i]<x)//如果不满x
if(x-a[i]>k)return false;//相差的值还大于最多要写的论文数,就不合法
ans+=1ll*(x-a[i]);//累加需要多少引用
if(ans>1ll*k*1ll*ll)return false;//如果引用数还大于最多可以引用的数量,自然不合法
return true;
int main()
scanf("%d%d%d",&n,&k,&ll);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1,cmp);//大到小排序
while(l<=r)//二分
int mid=(l+r)/2;
if(check(mid))l=mid+1,answer=mid;
else r=mid-1;
printf("%d",answer);
return 0;
谢谢
以上是关于2021.8.14提高B组模拟6T2 + P7557 [USACO21OPEN] Acowdemia (二分)的主要内容,如果未能解决你的问题,请参考以下文章
2021.8.14提高B组模拟6T4 + P7555 [USACO21OPEN] Maze Tac Toe (dfs)
2021.8.14提高B组模拟6T4 + P7555 [USACO21OPEN] Maze Tac Toe (dfs)
2021.8.14提高B组模拟6T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)
2021.8.14提高B组模拟6T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)