昨天才回学校 刚好赶上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 */