Codeforces Round #294 (Div. 2)

A. A and B and Chess

题意:给出8*8的棋盘,大写的字母代表白方,小写的字母代表黑方,比较两方分别的权值多少

 1 #include<iostream>  
 2 #include<cstdio>  
 3 #include<cstring>  
 4 #include<algorithm>  
 5 using namespace std;
 6 
 7 char s[10][10];
 8 
 9 int main()
10 {
11     int a=0,b=0,i,j;
12     for(i=0;i<8;i++) cin>>s[i];
13     
14     for(i=0;i<8;i++)
15     {
16         for(j=0;j<8;j++)
17         {
18             
19             if(s[i][j]=='Q') a+=9;
20             if(s[i][j]=='q') b+=9;
21             
22             if(s[i][j]=='R') a+=5;
23             if(s[i][j]=='r') b+=5;
24             
25             if(s[i][j]=='B') a+=3;
26             if(s[i][j]=='b') b+=3;
27             
28             if(s[i][j]=='N') a+=3;
29             if(s[i][j]=='n') b+=3;
30             
31             if(s[i][j]=='P') a+=1;
32             if(s[i][j]=='p') b+=1;
33         }
34     }
35         
36     if(a>b) printf("White
");
37     else if(a<b) printf("Black
");
38     else
39     printf("Draw
");
40 }
View Code

B. A and B and Compilation Errors

题意:给出n个数,再删掉其中的一个数,再删掉一个数,输出第一个被删除的数,第二个被删除的数

先排序,然后再用删之前的那一列数到新的这一列数中去找,没有找到,则说明被删除了

 1 #include<iostream>  
 2 #include<cstdio>  
 3 #include<cstring>  
 4 #include<algorithm>  
 5 using namespace std;
 6 
 7 int a[100005],b[100005],c[100005];
 8 
 9 int main()
10 {
11     int n,i,j,x,y;
12     scanf("%d",&n);
13     for(i=1;i<=n;i++) scanf("%d",&a[i]);
14     sort(a+1,a+n+1);
15     for(i=1;i<=n-1;i++) scanf("%d",&b[i]);
16     sort(b+1,b+n);
17     for(i=1;i<=n-2;i++) scanf("%d",&c[i]);
18     sort(c+1,c+n-1);
19     
20     for(i=1;i<=n;i++)
21     {
22         if(a[i]!=b[i])
23         {
24             x=a[i];
25             break;
26         }
27     }
28     for(i=1;i<=n-1;i++)
29     {
30         if(c[i]!=b[i])
31         {
32             y=b[i];
33             break;
34         }
35     }
36     printf("%d
",x);
37     printf("%d
",y);    
38 }
View Code

C. A and B and Team Training

题意:给出n个教练,n个新手,组队是一个教练带两个新手,或者两个教练带一个新手,问最多能组多少个队伍

自己想的时候= =想到dp去了---后来问到思路是这样的 如果哪一边人多,就出两个人,哪一边人少,就出一个人,两边人数相同,则随便

 1 #include<iostream>  
 2 #include<cstdio>  
 3 #include<cstring>  
 4 #include<algorithm>  
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     int n,m,ans=0;
10     scanf("%d %d",&n,&m);
11     while((n+m>=3)&&n&&m)
12     {
13         if(n>=m)
14         {
15             n=n-2;m=m-1;
16         }
17         else
18         {
19             n=n-1;m=m-2;
20         }
21         ans++;
22     }
23     printf("%d
",ans);
24 }
View Code

D

题意:给出26个字母分别的权值,再给出一个字符串, 求满足这两个条件的子串的个数 1 首尾字母相同 2 除去首尾字母其他字母加起来的和为0

搜了题解来看= =还是没有明白---占坑---

原文地址:https://www.cnblogs.com/wuyuewoniu/p/4309822.html