A-Bridging the Gap 2(贪心)
题意:有n个人,每个人有hi的体力值,只有一艘船,每次最少载l人最多载r人,每次过河消耗船上所有人的1点体力值。
分析:最优的情况是最后一轮送过去R人,则会进行m轮,每个人一定不会超过m轮。需判断所有人的划船轮数之和除 L 得到的最大划船轮数是否小于k即可。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n,L,R;cin>>n>>L>>R;
int h[n+10];
ll c=0,m=ceil(1.0*(n-R)/(R-L));
for(int i=1;i<=n;i++){
cin>>h[i];
c+=min((h[i]-1)/2ll,m);
}
if(c>=m*L)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
牛客暑期3A
最新推荐文章于 2024-09-06 10:38:06 发布