Codeforces Round #375 (Div. 2)

Posted chendl111

tags:

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

题目链接:

A:The New Year: Meeting Friends

B:Text Document Analysis

C:Polycarp at the Radio

分析:这场第一题送分,第二题模拟,第三题构造+特殊处理。做出几道说几道,QAQ

A.

求出最大值与最小值之差即可

B.

多种情况判断一下,分为

\'_\':判断前一个是否为单词,是且在括号内则cnt++,不在括号内则比较最大值

\'(\':flag++,判断前一个是否为单词,是则同上处理

\')\':flag--,同样判是否为单词,是则cnt++

若为单词且不在括号内则 len++

详情见代码

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 using namespace std;
 5 
 6 char s[256];
 7 int n,cnt,maxlen,len,i,flag;
 8 
 9 int main()
10 {
11     cin>>n>>s;
12     while(s[i]!=\'\\0\')
13     {
14         switch(s[i++])
15         {
16             case \'_\':if(!flag) {maxlen=max(maxlen,len),len=0;} 
17                     else if(i>1&&(s[i-2]>=\'a\'&&s[i-2]<=\'z\'||s[i-2]>=\'A\'&&s[i-2]<=\'Z\')) {cnt++;}break;
18             case \'(\':flag++;maxlen=max(maxlen,len),len=0;break;
19             case \')\':flag--;if(s[i-2]>=\'a\'&&s[i-2]<=\'z\'||s[i-2]>=\'A\'&&s[i-2]<=\'Z\') {cnt++;}break;
20             default:if(!flag) len++;
21         }
22     }
23     maxlen=max(maxlen,len);
24     printf("%d %d\\n",maxlen,cnt);
25 }
View Code

C.

对每一个<=m的数记录次数,然后要求的最大的最小值即为n/m

遍历数组b,若b[i]<=m&&a[b[i]]>x||b[i]>m,那么遍历a,找到a[i]<x,然后处理,注意判断的顺序

详情见代码

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<iostream>
 4 using namespace std;
 5 
 6 int n,m,x,a[2020],b[2020],cnt,num;
 7 
 8 int main()
 9 {
10     scanf("%d %d",&n,&m);
11     for(int i=1;i<=n;++i)
12     {
13         scanf("%d",b+i);
14         if(b[i]<=m) a[b[i]]++;
15     }
16     x=n/m;
17     for(int i=1;i<=n;++i) if(b[i]>m||b[i]<=m&&a[b[i]]>x)
18     {
19         //printf("b[%d]=%d\\n",i,b[i]);
20         for(int j=1;j<=m;++j) if(a[j]<x)
21         {
22             //printf("a[%d]=%d\\n",j,a[j]); 
23             if(b[i]<=m)a[b[i]]--;b[i]=j;a[j]++;cnt++;break;
24         }
25         //for(int i=1;i<=n;++i) printf("%d%c",b[i],i==n?\'\\n\':\' \');
26     }
27     printf("%d %d\\n",x,cnt);
28     for(int i=1;i<=n;++i) printf("%d%c",b[i],i==n?\'\\n\':\' \');
29 }
View Code

 

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

Codeforces Round #375 (Div. 2) A

Codeforces Round #375 (Div. 2)

Codeforces Round #375 (Div. 2) C

Codeforces Round #375 (Div. 2)

Codeforces Round #375 (Div. 2) ABCDE

Circling Round Treasures(codeforces 375c)