【HDU6020---MG loves apple(枚举)】赋料扬雄敌,诗看子建亲。这篇文章主要讲述HDU6020---MG loves apple(枚举)相关的知识,希望能为你提供帮助。
题目链接
Problem Description
MG is a rich boy. He has
n
apples, each has a value of V(0<
=V<
=9).
A valid number does not contain a leading zero, and these apples have just made a valid
N
digit number.
MG has the right to take away
K
apples in the sequence, he wonders if there exists a solution: After exactly taking away
K
apples, the valid
N?K
digit number of remaining apples mod
3
is zero.
MG thought it very easy and he had himself disdained to take the job. As a bystander, could you please help settle the problem and calculate the answer?
Input
The first line is an integer
T
which indicates the case number.(1<
=T<
=60)
And as for each case, there are
2
integer
N(1<
=N<
=100000),K(0<
=K<
N)
in the first line which indicate apple-number, and the number of apple you should take away.
MG also promises the sum of
N
will not exceed
1000000。
Then there are
N
integers
X
in the next line, the i-th integer means the i-th gold’s value(0<
=X<
=9).
Output
As for each case, you need to output a single line.
If the solution exists, print”yes”,else print “no”.(Excluding quotation marks)
Sample Input25 2112304 21000
Sample Outputyes
no
题意:
文章图片
思路:
文章图片
代码如下:
#include < iostream> #include < algorithm> #include < cstring> #include < cstdio> using namespace std; inta[100005]; char s[100005]; void cal(int & a3, int & E1,int & E2,int N) { a3=0; E1=0; E2=0; for(int i=1; i< =N; i++) { if(a[i]==3) break; if(a[i]==0) a3++; } for(int i=1; i< =N; i++) { if(a[i]==0) break; if(a[i]==1) E1=1; if(a[i]==2) E2=1; } return ; }int main() { int T; cin> > T; while(T--) { int N,K; int s1=0,s2=0,s3=0; scanf("%d%d",& N,& K); scanf("%s",s+1); for(int i=1; i< =N; i++) { a[i]=s[i]-\'0\'; if(a[i]%3==1) a[i]=1,s1++; else if(a[i]%3==2) a[i]=2,s2++; else s3++,a[i]=(a[i])?3:0; } int ans=(s1+s2*2)%3; int a3,E1,E2,f=0; cal(a3,E1,E2,N); for(int C=0; C< =s2& & C< =K; C++)///C-> 2; B-> 1; A-> 0; { int B=((ans-C*2)%3+3)%3; for(; B< =s1& & C+B< =K; B=B+3) { int A=K-C-B; if(A< =s3) { if(A> a3) f=1; else if(B< s1& & E1) f=1; else if(C< s2& & E2) f=1; if(f) break; } } if(f) break; } if((N==K+1)& & s3) f=1; if(f) puts("yes"); else puts("no"); } return 0; }
推荐阅读
- 微软小娜APP的案例分析
- Android 网络
- Android底部导航BottomNavigationBar
- XamarinAndroid 自动绑定View变量
- android gralloc是什么意思
- 填坑实录Android Studio 利用 ADB WIFI 插件实现真机无线调试
- Android弹幕实现(基于B站弹幕开源系统-重构)
- Android性能优化系列之Bitmap图片优化
- LeetCode 448. Find All Numbers Disappeared in an Array