U415969这道题蒟蒻我样例过了,但无法AC,还请各位大神看看。
蒟蒻的代码:
#include <bits/stdc++.h>
using namespace std;
int n,i,j,ans,sum,k,m,y;
int M[400008];
bool cmp(int x,int y)
{
return x>y;
}
int main ()
{
cin>>n>>y>>m;
sum=y-n;//与目标的差
for(i=1;i<=m;++i)
cin>>M[i];
sort(M+1,M+n+1,cmp);//排列,从大到小
ans=1;//至少一次
for(i=1;i<=sum;++i)
{
if(n<y)
{
if(M[i]<=y)//不能超限
{
n=n+M[i]-1;
ans++;
}
}
else
break;
}
cout<<ans;
return 0;
}
某“神仙”代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, y, m;
std::cin >> n >> y >> m;
std::vector<int> M(m);
for (int i = 0; i < m; ++i) {
std::cin >> M[i];
}
int remaining_apples = y - n;
int used_bars = 0;
for (const auto& bar_effect : M) {
if (bar_effect > 1 && remaining_apples >= bar_effect - 1) {
remaining_apples -= (bar_effect - 1);
used_bars++;
}
}
std::cout << used_bars << std::endl;
return 0;
}
火速请求指点!!!