当前位置:
首页 >
CodeForces - 1030C Vasya and Golden Ticket(思维)
发布时间:2024/4/11
44
豆豆
生活随笔
收集整理的这篇文章主要介绍了
CodeForces - 1030C Vasya and Golden Ticket(思维)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目链接:点击查看
题目大意:给定长度为n的字符串,字符串全部由0~9的数字组成,要求将字符串划分为连续的子字符串,要求每个子字符串的和都要相等,问给定字符串能否成功划分
题目分析:简单思维,因为划分后的子串一定从第一位开始,那么就记录一下数列的前缀和,因为n比较小,然后就暴力枚举每一种前缀和,用check函数检查,如果有其中一种情况满足条件,那么就输出yes,全都不满足再输出no,记得对0进行特判,我也不知道我的check函数出了什么问题,一开始连WA了不知道多少发,后来就在一开始先对0特判,判断完之后直接舍弃,这样一来终于给A了,上代码,不解释了:
#include<iostream> #include<string> using namespace std;const int N=110;int a[N],sum[N],n,cnt;string str;bool check(int judge,int pos) {int ans=0;for(int i=pos+1;i<=cnt;i++){ans+=a[i];if(ans==judge){ans=0;if(i==cnt)return true; }if(ans>judge)return false;}return false; }int main() {while(scanf("%d",&n)!=EOF){cin>>str;bool flag=true;cnt=0;for(int i=0;i<n;i++){if(str[i]!='0')a[++cnt]=str[i]-'0';}if(cnt==0){printf("YES\n");continue;}sum[0]=0;for(int i=1;i<=cnt;i++){sum[i]=sum[i-1]+a[i];}for(int i=1;i<=cnt;i++){if(check(sum[i],i)){printf("YES\n");flag=false;break;}}if(flag)printf("NO\n");}return 0; }
总结
以上是生活随笔为你收集整理的CodeForces - 1030C Vasya and Golden Ticket(思维)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 中石油训练赛 - Bee Problem
- 下一篇: CodeForces - 1031B C