A.The Useless Toy
题意:
字符>、<、^、v都可以看成一个旋转对应另一个。现在给你一个其中的两个字符,和旋转的次数,如果从字符A到B是顺时针形成的,输出cw,逆时针输出ccw,无法确定的时候输出undefined。
思路:
偶数的时候逆时针成立的话顺时针必定成立,必定输出undefined 。然后分别对1次和3次进行讨论。
#include "bits/stdc++.h"
using namespace std;
int main(int argc, char const *argv[])
{
char ch1, ch2;
int n;
scanf("%c%*c%c", &ch1, &ch2);
scanf("%d", &n);
if (n%2 == 0) printf("undefined
");
else {
n %= 4;
if (n == 1) {
if ((ch1=='^'&&ch2=='>')||(ch1 == '>'&&ch2=='v')||(ch1=='v'&&ch2=='<')||(ch1=='<'&&ch2=='^')) printf("cw
");
else printf("ccw
");
}
else {
if ((ch1=='^'&&ch2=='>')||(ch1 == '>'&&ch2=='v')||(ch1=='v'&&ch2=='<')||(ch1=='<'&&ch2=='^')) printf("ccw
");
else printf("cw
");
}
}
return 0;
}
B.The Festive Evening
题意:
果冻城堡开会,会有一些没有邀请的人混进去。城堡有26个门口A-Z代表每个城堡门。客人只能一个一个的进入。城堡每个门从第一个人到达开始打开直到最后一个人关闭。这段时间应该有守卫在值班,否则会有没收到邀请的人混进去。现在有n个客人到访的顺序和k个守卫,检测是否会有不请自来的人进去。
思路:
找的每个门口开门和关门的时间,枚举每个时间点,检测最大的开门数目是否大于守卫的数目。
#include "bits/stdc++.h"
using namespace std;
const int maxn = 1e6 + 10;
char s[maxn];
int open[30], close[30];
int main(int argc, char const *argv[])
{
int n, k;
scanf("%d%d", &n, &k);
scanf("%s", s);
memset(open, -1, sizeof(open));
for (int i = 0; i < n; i++) {
int idx = s[i] - 'A';
if (open[idx] == -1) open[idx] = i;
close[idx] = i;
}
int maxx = 0;
for (int i = 0; i < n; i++) {
int t = 0;
for (int j = 0; j < 26; j++) {
if (open[j] != -1 &&i >= open[j] && i <= close[j]) t++;
}
maxx = max(t, maxx);
}
if (maxx>k) printf("YES
");
else printf("NO
");
return 0;
}
C. The Meaningless Game
题意:
Slastyona和她的狗在做游戏,每轮选择一个数k,然后谁先发出声音,谁获胜,获胜的人的分数乘上(k^2),输的人乘上(k)。现在她的数据丢了,只剩下分数,让你判断分数对不对。
思路:
我的思路复杂了,结果各种优化也是TLE,其实对于这两个分数,他们的乘积应该是某个正整数的三次方,直接二分。
#include "bits/stdc++.h"
using namespace std;
typedef long long LL;
bool find(LL x) {
int lb = 1,ub = 1e6;
LL mid;
while(lb <= ub) {
mid = (lb+ub)/2;
if(mid*mid*mid == x) return true;
if(mid*mid*mid < x) lb = mid + 1;
else ub = mid-1;
}
return false;
}
int main(int argc, char const *argv[]) {
int T;
scanf("%d", &T);
while(T--) {
LL a, b;
scanf("%lld%lld",&a, &b);
if(a*a%b == 0 && b*b%a == 0 && find(a*b)) printf("Yes
");
else printf("No
");
}
return 0;
}