Codeforces Round #426 (Div. 2)

来源:互联网 发布:linux python27 pyqt5 编辑:程序博客网 时间:2024/05/20 08:01

A:

题意:v < ^ > v,变换顺序是这样的,给你任意两个字符,问第一个字符,再给你这两个字符之间间隔的字符数,问你通过什么样的方式使得第一个字符变到第二个字符。若是顺时针就是输出cw,逆时针就是ccw,顺时针逆时针都可以的话输出undefined比如:

^ >

1

输出cw
思路:看题解

#include<stdio.h>#include<iostream>using namespace std;char a,c;int m;char b[10];int main(){b[0]='v';b[1]='<';b[2]='^';b[3]='>';b[4]='\0';cin>>a>>c;cin>>m;int flag=1;int cnt=0,ans=0;for(int i=0; i<4; i++){if(a==b[i])cnt=i;if(c==b[i])ans=i;}int x=(ans+4-cnt)%4;int y=(4-x)%4;//printf("%d %d\n",x,y);if(m%4==x)flag=2;if(m%4==y)flag=1;if(x==y)flag=3;if(flag==2)printf("cw\n");else if(flag==1)printf("ccw\n");else if(flag==3)printf("undefined\n");return 0;}


B:

题意:给你一个序列,表示每个时候应该开哪个门(用A~Z表示),每个门一旦开启之后必须直到后面不用的时候才关闭(门一旦开启就需要管理员来守),再给你k个管理员,每个管理员在同一时刻只能守一个门,问你需不需要添加管理员,若需要就输出Yes,否则就是No

思路:见代码

#include <cstdio>#include <algorithm>#include <iostream>using namespace std;struct letter{int r;int l;} arr[30];char str[1000050];int main(){int n, k;char tmp;while(cin >> n >> k){for(int i=0; i<26; i++)arr[i].r = -1, arr[i].l = -1;getchar();int flag = 0;int ans = 0;for(int i=0; i<n; i++){cin >> str[i];if(arr[ str[i] - 'A'].r == -1)arr[ str[i] - 'A'].r = i;if(arr[ str[i] - 'A'].l == -1)arr[ str[i] - 'A'].l = i;else if(i >= arr[ str[i] - 'A'].l)arr[ str[i] - 'A'].l = i;printf("arr %d %d %d\n", str[i] - 'A', arr[ str[i] - 'A'].r, arr[ str[i] - 'A'].l);}puts(str);for(int i=0; i<n; i++){if(arr[ str[i] - 'A' ].r == i)ans++;if(ans > k){flag = 1;break;}if(arr[ str[i] - 'A' ].l == i)ans--;printf("ans = %d\n", ans);if(ans > k){flag = 1;break;}}if(flag)printf("YES\n");elseprintf("NO\n");}return 0;}


C:

题意:Slastyona 和 Pushok 一开始分数都为1,Slastyona 和 Pushok 各自报一个数(数字大的那个人赢)赢得那个人的分数乘k^2(k是报的数字大的那个数),输了的那个人分数乘k。然后给你两个Slastyona 和 Pushok 最后的得分,问有没有情况结果导致Slastyona 和 Pushok 分数是这样的,如果有就是YES,没有就是NO

思路:我一拿着就直接乘起来开三方了,错在精度的问题,交GNU C++14没有过,最后交GNU C++11过了的,也可以二分这题。

#include<stdio.h>#include<math.h>#include<algorithm>#define ll long longusing namespace std;const long double N=1e-8;int n;ll a,b;int main(){while(~scanf("%d",&n)){while(n--){scanf("%I64d%I64d",&a,&b);ll x=a*b;long double y=powl(x*1.0,1.0/3.0);int z=pow(x,1.0/3.0);if(fabs(y-1)>=N)z++;// printf("%.14lf %d\n",y,z);if(fabs(y-z)<N){if(a%z==0&&b%z==0||a%z==0&&z%b==0||z%a==0&&b%z==0||z%a==0&&z%b==0)printf("Yes\n");elseprintf("No\n");}else{printf("No\n");}}}return 0;}




原创粉丝点击