[ An Ac a Day ^_^ ] Codeforces Round #368 Div. 2 A B C

昨天才回学校 刚好赶上CF所以就没写博客 不过还是水题了……

A.

比赛的时候被hack了 仔细读题才知道grey也算是黑白的

英语不好好伤心……

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<math.h>
 5 #include<string.h>
 6 #include<string>
 7 #include<map>
 8 #include<set>
 9 #include<vector>
10 #include<queue>
11 #define M(a,b) memset(a,b,sizeof(a))
12 using namespace std;
13 typedef long long ll;
14 int main(){
15     int n,m;
16     char cl;
17     bool ok=true;
18     scanf("%d%d",&n,&m);
19     getchar();
20     for(int i=0;i<n;i++){
21         while(true){
22            scanf("%c",&cl);
23            if(cl=='
') break;
24            if(cl==' ') continue;
25            if(cl!='W'&&cl!='B'&&cl!='G') ok=false;
26         }
27     }
28     if(ok) puts("#Black&White");
29     else puts("#Color");
30     return 0;
31 }
32 /*
33 
34 2 2
35 C M
36 Y Y
37 
38 3 2
39 W W
40 W W
41 B B
42 
43 1 1
44 W
45 
46 */

B.

一开始看样例能看出来一点题意……

题意呢……

有两种店 问两种店之间的最短距离

遍历一遍就好了……

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<math.h>
 5 #include<string.h>
 6 #include<string>
 7 #include<map>
 8 #include<set>
 9 #include<vector>
10 #include<queue>
11 #define M(a,b) memset(a,b,sizeof(a))
12 using namespace std;
13 typedef long long ll;
14 bool bk[100005];
15 struct bian{
16     int start,over,val;
17 }v[100005];
18 int main(){
19     int n,m,k;
20     scanf("%d%d%d",&n,&m,&k);
21     for(int i=0;i<m;i++)
22         scanf("%d%d%d",&v[i].start,&v[i].over,&v[i].val);
23     for(int i=0;i<k;i++){
24         int a;
25         scanf("%d",&a);
26         bk[a]=true;
27     }
28     int min_=1000000001;
29     for(int i=0;i<m;i++)
30         if(bk[v[i].start]^bk[v[i].over])
31             if(v[i].val<min_) min_=v[i].val;
32     if(min_!=1000000001) printf("%d
",min_);
33     else printf("-1
");
34     return 0;
35 }
36 /*
37 
38 5 4 2
39 1 2 5
40 1 2 3
41 2 3 4
42 1 4 10
43 1 5
44 
45 3 1 1
46 1 2 3
47 3
48 
49 */

C.

公式题 给一个数n 问n是不是勾股数 是的话输出另外两个

公式也是上网才搜到……

n==1和n==2时没有勾股数 其他数都有

n是偶数的时候三个数分别是2*n,n*n+1,n*n-1

n是奇数的时候是2*n,2*n*n+2*n,2*n*n+2*n+1

看了下别人的代码 构造很巧妙……

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<math.h>
 5 #include<string.h>
 6 #include<string>
 7 #include<map>
 8 #include<set>
 9 #include<vector>
10 #include<queue>
11 #define M(a,b) memset(a,b,sizeof(a))
12 using namespace std;
13 typedef long long ll;
14 int main(){
15     ll n;
16     scanf("%I64d",&n);
17     if(n==1||n==2) printf("-1
");
18     else if(n%2&&(n/=2)) printf("%I64d %I64d
",2*n*n+2*n,2*n*n+2*n+1);
19     else if(n/=2)printf("%I64d %I64d
",n*n-1,n*n+1);
20     return 0;
21 }
22 /*
23 
24 3 6 1 17 67
25 
26 */
原文地址:https://www.cnblogs.com/general10/p/5793740.html