求调昨晚 ABC D
  • 板块学术版
  • 楼主Harrylzh
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/15 08:20
  • 上次更新2024/12/15 11:12:41
查看原帖
求调昨晚 ABC D
1033263
Harrylzh楼主2024/12/15 08:20

WA*21,看不出来哪里错了,思路也和官方题解一样。

#include<bits/stdc++.h>
using namespace std;
long long n;
long long s;
long long a[10000000+5];
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>s;
	if(s==0)
	{
		cout<<"No\n";
		return 0;
	}
	long long sm=0;
	for(long long i=1;i<=n;i++) cin>>a[i],sm+=a[i];
	for(long long i=n+1;i<=2*n;i++)
	{
		a[i]=a[i-n];
	}
	long long cur=1;
	long long ss=0;
	for(long long i=1;i<=2*n;i++)
	{
		ss+=a[i];
		if(ss>s%sm&&cur<=i) ss-=a[cur],cur++;
		if(ss==s%sm)
		{
			cout<<"Yes\n";
			return 0;
		}
	}
	cout<<"No\n";
	return 0;
}
2024/12/15 08:20
加载中...