Codeforces - Berland Fair

题目链接:Codeforces - Berland Fair


因为每次mod一个比自己小的数字,值至少减去一半。

所以我们暴力循环即可。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,s,a[N],sum,res,k,vis[N];
signed main(){
	cin>>n>>s;	k=n;
	for(int i=1;i<=n;i++)	scanf("%lld",&a[i]),sum+=a[i];
	while(s){
		res+=(s/sum*k),s%=sum;	int flag=0;
		for(int i=1;i<=n;i++){
			if(vis[i])	continue;
			if(s>=a[i])	s-=a[i],res++,flag=1;
			else	vis[i]=1,k--,sum-=a[i];
		}
		if(!flag)	break;
	}
	cout<<res;
	return 0;
}
发布了604 篇原创文章 · 获赞 242 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_43826249/article/details/104400015
今日推荐