Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)

Posted hitsz-crz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)相关的知识,希望对你有一定的参考价值。

A.Phone Numbers

题意:给你n个数字,每个数字最多只能用一次,问你最多能组成以8开头的11位电话号码有多少个

思路:模拟即可,注意char数组读入是从0下标开始的(在这里被hack了...)

技术分享图片
 1 #include<bits/stdc++.h>
 2 int main()
 3 {
 4     int n,num=0,ans=0;
 5     char c[105];
 6     scanf("%d%s",&n,c);
 7     for(int i=0;i<n;i++)if(c[i]==8)num++;//原来是从1到n... 
 8     while(num>0&&n>=11)
 9     {
10         num--;
11         n-=11;
12         ans++;
13     }
14     printf("%d
",ans);
15     return 0;
16 }
View Code

B. Maximum Sum of Digits

题意:设正整数a,b和为n,现给定n,求每位数字和最大的一组(a,b),这个和为多少

思路:由于是求每位数字的和,所以具体地考虑对一个具体数位的分割,发现对于一个确定的数ai,无论怎样分,是否借位/被借位,其和都是ai,而对于不同分法产生差异的原因在于是否借位

  由此可以记忆化dfs,设f(id,bor,Now)表示到第id位,是否被借位(0,1),当前数码和为Now

  要注意借位与不借位情况的判定(原来来少考虑了没有借位过的9不能借位,被hack了)

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int ans=0,a[15]={0};
 4 int Mark[15][5][255]={0};
 5 int dfs(int id,int bor,int Now)
 6 {
 7     if(id==a[0]+1)
 8     {
 9         ans=max(ans,Now);
10         return ans;
11     }
12     
13     if(Mark[id][bor][Now]!=-1)return Mark[id][bor][Now];
14     
15     int tmp=0;
16     if(a[id]!=0)tmp=max(tmp,dfs(id+1,0,Now+a[id]-bor));
17     //µ±Ç°Î»²»ÎªÁãÔò¿¼ÂDz»ÏòÏÂһλ½èλµÄÇé¿ö£¨Îª0Ôò½èλ±ØÈ»¸üÓÅ£¬ÇÒ°üº¬Á˱»½èλµÄÇé¿ö£© 
18     if(id!=a[0]&&(!(a[id]==9&&bor==0)))tmp=max(tmp,dfs(id+1,1,Now+a[id]+10-bor));
19     //¸ÃλÖò»Îª×î¸ßλÇÒ²»ÎªÃ»±»½èλ¹ýµÄ9£¬Ôò¿¼ÂÇÏòÏÂһλ½èλ 
20     //Ô­À´ÉÙ¿¼ÂÇÁËûÓнèλ¹ýµÄ9²»Äܽèλ 
21     
22     return Mark[id][bor][Now]=tmp;
23 }
24 int main()
25 {
26     long long n;
27     scanf("%lld",&n);
28     while(n)
29     {
30         a[++a[0]]=n%10;
31         n/=10;
32     }
33     memset(Mark,-1,sizeof(Mark));
34     dfs(1,0,0);
35     printf("%d
",ans);
36     return 0;
37 }
View Code

C. Maximum Subrectangle

题意:

D. Social Circles

以上是关于Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)C

[Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) ](A~E)

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C D

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C. Maximum Subrectangle

Codeforces Round #513 游记