博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces #426(div2)
阅读量:6548 次
发布时间:2019-06-24

本文共 2476 字,大约阅读时间需要 8 分钟。

******
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\n");    else {        n %= 4;        if (n == 1) {            if ((ch1=='^'&&ch2=='>')||(ch1 == '>'&&ch2=='v')||(ch1=='v'&&ch2=='<')||(ch1=='<'&&ch2=='^')) printf("cw\n");            else printf("ccw\n");        }        else {            if ((ch1=='^'&&ch2=='>')||(ch1 == '>'&&ch2=='v')||(ch1=='v'&&ch2=='<')||(ch1=='<'&&ch2=='^')) printf("ccw\n");            else printf("cw\n");        }    }    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\n");    else printf("NO\n");     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\n");                     else printf("No\n");      }      return 0;  }

转载于:https://www.cnblogs.com/cniwoq/p/7262502.html

你可能感兴趣的文章
zabbix 4.0监控vsphere6.5
查看>>
使用 PowerShell 自动化 CloudServices 发布
查看>>
【官方文档】linux 安装花生壳
查看>>
决心书
查看>>
samba
查看>>
Android中asset文件夹和raw文件夹区别
查看>>
HBASE之RowKey排序解析
查看>>
这样去写你的 HTML.
查看>>
Express 常用中间件 body-parser 实现解析
查看>>
开源库RxJava、ButterKnife
查看>>
如何掌握多处理器编程技巧
查看>>
java中生成唯一的ID
查看>>
Webpack 4.X 从入门到精通 - loader(五)
查看>>
系统服务的控制
查看>>
分布式事务系列(开篇)提出疑问和研究过程
查看>>
AngularJS
查看>>
各区块链底层数据存储分析(二)
查看>>
js中获取时间new date()的用法
查看>>
Java 集合深入理解(8):AbstractSequentialList
查看>>
MySQL主从复制与读写分离
查看>>