• Codeforces Round #698 (Div. 2) (思维)


    A. Nezzar and Colorful Balls


    题意:给你一个非递减序列的球,现在要给每个球涂色,要求每种颜色的球的值是单调递增的,问最少用多少种颜色
     
    解题思路:根据题意,我们不难看出相同权值的小球不可能为同一颜色,我们只需要找到权值相同且数量最多的小球的数量就行,由于球的权值是非递减的,换句话说权值相同的球是挨在一起的,我们只需要判断连续的相同的球的数量最大是多少就行
    Code:

    #include<bits/stdc++.h>
    using namespace std;
    int a[105];
    int main()
    {
    	int t,n;
    	scanf("%d",&t);
    	while(t--) {
    		scanf("%d",&n);
    		for(int i = 1;i <= n; ++i) scanf("%d",&a[i]);
    		a[0] = a[1];
    		int ans = 1;
    		int loc = 0,lock = a[1];
    		for(int i = 1;i <= n; ++i) {
    			if(a[i] == lock)
    				loc++;
    			else {
    				loc = 1;
    				lock = a[i];
    			}
    			ans = max(ans,loc);
    		}
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    

    B. Nezzar and Lucky Number


    题意:判断是否有由一个或者多个包含幸运的数字d的数组成a[i],这个幸运数字d选取[1,9]
     
    解题思路:很明显当(a[i] >= 10 imes d)时,一定存在,否则我们就分类讨论,详情请看代码,(代码由些许暴力)
    Code:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll t,q,d;
     
    int main()
    {
    	ll k;
    	scanf("%lld",&t);
    	while(t--) {
    		scanf("%lld%lld",&q,&d);
    		for(int i = 0;i < q; ++i) {
    			scanf("%lld",&k);
    			ll kk = k % 10;
    			if(k >= d * 10LL) {
    				puts("YES");
    			}
    			else {
    				if(d == 1)
    					puts("YES");
    				else if(d == 2) {
    					if(k % 2 == 0)
    						puts("YES");
    					else
    						puts("NO");
    				}
    				else if(d == 3) {
    					if(kk == 3 || kk == 6 || kk == 9 || (k >= 12 && kk == 2) || (k >= 15 && kk == 5) || (k >= 18 && kk == 8) || (k >= 21 && kk == 1) || (k >= 24 && kk == 4) || (k >= 27 && kk == 7) || (k >= 30 && kk == 0))
    						puts("YES");
    					else
    						puts("NO");
    				}
    				else if(d == 4) {
    					if(kk == 4 || kk == 8 || (k >= 12 && kk == 2)|| (k >= 16 && kk == 6) || (k >= 20 && kk == 0))
    						puts("YES");
    					else
    						puts("NO");
    				}
    				else if(d == 5) {
    					if(kk == 0 || kk == 5)
    						puts("YES");
    					else
    						puts("NO");
    				}
    				else if(d == 6) {
    					if(kk == 6 || (k >= 12 && kk == 2) || (k >= 18 && kk == 8) || (k >= 24 && kk == 4) || (k >= 30 && kk == 0))
    						puts("YES");
    					else
    						puts("NO");
    				}
    				else if(d == 7) {
    					if(kk == 7 || (k >= 14 && kk == 4) || (k >= 21 && kk == 1) || (k >= 28 && kk == 8) || (k >= 35 && kk == 5) || (k >= 42 && kk == 2) || (k >= 49 && kk == 9) || (k >= 56 && kk == 6) || (k >= 63 && kk == 3) || (k >= 70 && kk == 0))
    						puts("YES");
    					else
    						puts("NO");
    				}
    				else if(d == 8) {
    					if(kk == 8 || (k >= 16 && kk == 6) || (k >= 24 && kk == 4) || (k >= 32 && kk == 2) || (k >= 40 && kk == 0))
    						puts("YES");
    					else
    						puts("NO");
    				}
    				else if(d == 9) {
    					if(kk == 9 || (k >= 18 && kk == 8) || (k >= 27 && kk == 7) || (k >= 36 && kk == 6) || (k >= 45 && kk == 5) || (k >= 54 && kk == 4) || (k >= 63 && kk == 3) || (k >= 72 && kk == 2) || (k >= 81 && kk == 1) || (k >= 90 && kk == 0))
    						puts("YES");
    					else
    						puts("NO");
    				}
    			}
    		}
    	}
    	
    	return 0;
    }
    

    看到一个神奇的代码:

    main(q,d,x){for(scanf("%*d");~scanf("%d%d",&q,&d);)while(q--){
    scanf("%d",&x);while(x>d&&x<d*10&&x%d)x-=10;puts(x<d?"NO":"YES");}}
    
  • 相关阅读:
    怎样用回显和无刷新实现模糊查询?
    2020软件工程作业02
    2020软件工程作业01
    2019春总结作业
    2019春第四次课程设计实验报告
    2019春第三次课程设计实验报告
    2019春第二次课程设计实验报告
    2019春第一次课程设计实验报告
    2019春第十二周作业
    2019春第十一周作业
  • 原文地址:https://www.cnblogs.com/Mangata/p/14347745.html
Copyright © 2020-2023  润新知