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\n");

37     else if(a<b) printf("Black\n");

38     else

39     printf("Draw\n");

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\n",x);

37     printf("%d\n",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\n",ans);

24 }
View Code

 

 

D

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

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

你可能感兴趣的:(codeforces)