【前行】◇第3站◇ Codeforces Round #512 Div2
【第3站】Codeforces Round #512 Div2
第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间
Rating又掉了……但是没什么,比上一次好多了:)
◇ 简单总结
前两道题非常OK,秒掉还好。心态爆炸是从第三题开始的……一开始设计的判断方法没有考虑0,然后就错了很多次,然后改了过后又没有考虑整个数要分成2个及以上的数,继续WA,最后整个程序删了重新魔改了一次终于AC。感觉最后的AC代码的复杂度要比原来高一些,但是毕竟AC了,还是不错的(似乎并不是复杂度越低越好)。
然后基本上历程是这样的:
看前两题 -> 愉快砍掉 -> 看三题 -> 好像很简单:) -> 提交 -> WA了! -> 开始改 -> 迅速发现bug -> 改了 -> 再交 -> 继续WA:( -> 上述过程重复7次QwQ -> 开始看D题 -> 看懂了 -> 好像不好做 -> 突然灵感乍现 -> 回过头做C题 -> AC了 -> 比赛结束
◇ 题目&解析
A. In Search of an Easy Problem
· [翻译]
出题人正在尝试把第一题出得更简单。于是他调查了n个人,如果第i个人觉得题比较难,出题人就会得到反馈“1”,否则得到反馈“0”。当出题人得到所有反馈都是“0”时,这道题就被认为是简单的。
输入n,表示调查人数。给出n个数 0 或 1 表示每个人的反馈。
如果该问题被认为是简单的,则输出"EASY",否则输出"HARD"。
· [解析]
依次输入,用一个bool变量判断是否有出现“1”,如果有则输出"HARD",否则输出"EASY"。
· [源代码]
/*Lucky_Glass*/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
int main() {
scanf("%d",&n);
bool x=false;
for(int i=0,num; i<n; i++) {
scanf("%d",&num);
x|=num;
}
printf("%s\n",!x?"EASY":"HARD");
return 0;
}
B. Vasya and Cornfield
· [翻译]
有一块边长为n的正方形的地中间有一个矩形的田,田的四角的坐标分别是(0,d),(d,0),(n,n−d)(n−d,n)。
有m个蝗虫在这块地的某些坐标上,农夫想要知道哪些蝗虫在田里。
给出 n,d,m,以及每个蝗虫的坐标(均为整数,且矩形的每一条边都大于0),判断每个蝗虫是否在田里。
· [解析]
满满的全是“if”……
大概一开始我处理了一下图——如果d是大于n/2的,我就可以将原图左右翻转一下,把n-d作为新的d的值……也就是下面这样:
强行将情况转换一下……如果要进行这个操作,我就把bool变量flag赋值为true表示需要翻转。
之后输入虫的坐标时如果flag 为true,就把 x 改成 n-x,也就是进行一次翻转
接下来按虫的纵坐标分类讨论——
① 0≤y≤d : 在田里则是 d-y≤x≤d+y
② d<y<n-d : 在田里则是 y-d≤x≤y+d
③ n-d≤y≤n : 在田里则是 y-d≤x≤2n-d-y
输出即可。
· [源代码]
/*Lucky_Glass*/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,d,q;
int main() {
scanf("%d%d%d",&n,&d,&q);
bool flag=(n<d*2);
if(flag) d=n-d;
while(q--) {
int x,y;
scanf("%d%d",&x,&y);
if(flag) y=n-y;
if(y<=d) {
if(d-y<=x && x<=d+y)
printf("YES\n");
else
printf("NO\n");
} else if(d<y && y<n-d) {
if(y-d<=x && x<=y+d)
printf("YES\n");
else
printf("NO\n");
} else {
if(n-d-(n-y)<=x && x<=n-d+(n-y))
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}
C. Vasya and Golden Ticket
· [翻译]
Vasya有一个数字串,他希望把这个数字串分成多个(≥2)不重叠子串,且每个元素至少属于一个子串,满足每个子串中的数字之和相等。
输出是否可能。
· [解析]
首先可以用字符串储存数字串。
枚举第一个子串的范围为第 1~i 个数字。假设这样可行,则可以先算出每一个子串中的数字之gal和。用 tot 统计当前子串数字之和,依次枚举每一个数字,并加入到当前子串 —— 若tot>gal,则说明无法完成,如果tot==gal且下一位不是0(如果是0就可以继续添加到当前子串),则该子串已经达到目标,tot清零,记录下一个子串,用cnt记录分成的子串的个数。如果枚举到最后一个数字,则判断tot是否等于gal。特判一下——如果gal==0,就判断整个串是否都是0。
最后可以用bool保存答案,并判断cnt是否≥2,然后输出。
· [源代码]
/*Lucky_Glass*/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
char strnum[105];
int main() {
scanf("%d%s",&n,strnum);
int gal=0;
for(int i=0; i<n-1; i++) {
gal+=strnum[i]-'0';
int tot=0,cnt=0;
bool OK=true;
for(int j=0; j<n; j++) {
if(gal==0){
if(strnum[j]!='0'){
OK=false;
break;
}
else
cnt++;
}
else{
tot+=strnum[j]-'0';
if(tot>gal) {
OK=false;
break;
}
if(j==n-1 && tot!=gal) {
OK=false;
break;
}
if(tot==gal && strnum[j+1]!='0') tot=0,cnt++;
}
}
if(OK && cnt>=2) {
printf("YES\n");
return 0;
}
}
printf("NO\n");
return 0;
}
The End
Thanks for reading!
- Lucky_Glass
【前行】◇第3站◇ Codeforces Round #512 Div2的更多相关文章
- Codeforces Round #539 div2
Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...
- Codeforces Round#320 Div2 解题报告
Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...
- Codeforces Round #564(div2)
Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...
- Codeforces Round #361 div2
ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...
- Codeforces Round #626 Div2 D,E
比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...
- CodeForces Round 192 Div2
This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...
- codeforces Round#380 div2
1.字符串替换ogo+go…换成*** 思路:找ogo记录g位置,做初步替换和标记,非目标字母直接输出, 间隔为2的判断是否一个为标记g,一个为非标记做***替换 #include<iostre ...
- CodeForces Round 199 Div2
完了,这次做扯了,做的时候有点发烧,居然只做出来一道题,差点被绿. My submissions # When Who Problem Lang Verdict Time Memory 443 ...
- Codeforces Round #359 div2
Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...
随机推荐
- 希尔排序——Java实现
一.排序思想 希尔排序(Shell’s Sort)是插入排序的一种,是直接插入排序算法的一种更高版本的改进版本. 把记录按步长gap分组,对每组记录采用直接插入排序方法进行排序: 随着步长逐渐减小,所 ...
- 测试css3的动画效果在display:none的时候不耗费性能
也许你也有这个疑惑,动画一直在播放,那它不显示出来的时候也一直在播放的话,那是否一直占用资源呢? <!doctype html> <html> <head> < ...
- AE常用代码(标注要素、AE中画带箭头的线、如何获得投影坐标、参考坐标、投影方式、FeatureCount注意事项)
手上的电脑已经用了将近三年了,想入手一台Surface Pro,所以计划着把电脑上的资料整理下,部分资料打算发到博客上来,资料有同事.也有自己的.也有来自网络的,来源途径太多,也没法详细注明,请见谅! ...
- android 调试卡在:Waiting for Debugger - Application XXX is waiting for the debugger to Attach" 解决方法
解决方法:重启adb. 步骤:cmd进入命令行,进入adb所在目录先后执行adb kill-server,adb start-server.
- MonkeyRunnermac
http://blog.csdn.net/wyb199026/article/details/51436754 背景 之前想学习自动化测试的时候,就研究过MonkeyRunner,说实话MonkeyR ...
- ubuntu 火狐浏览器中常规方法安装flashplayer的问题
之前在网上看到很多朋友介绍了许多如何在ubuntu安装flashplayer 的方法!但是我的操作系统不知怎么的就是不能成功的安装!使我十分的苦恼!但是在我纲要邪气的时候再网上又看到一位朋友的解决方案 ...
- Vue2自定义指令改变DOM值后未刷新data中绑定属性的值
标签(空格分隔): Vue 自定义指令用于过滤输入框,只允许输入数字: Vue.directive('numberOnly', { bind: function (el, binding) { el. ...
- 记录一次 sql在数据库可以查到 mybatis代码查不到的问题
原始代码: 查不到 SELECT b.ID, b.PRICE_ITEM_CODE, b.PRICE_NAME, b.DES_SITE_CODE, b.SRC_SITE_CODE, b.CALC_TYP ...
- FFT算法实现——基于GPU的基2快速傅里叶变换
最近做一个东西,要用到快速傅里叶变换,抱着蛋疼的心态,自己尝试写了一下,遇到一些问题. 首先看一下什么叫做快速傅里叶变换(FFT)(来自Wiki): 快速傅里叶变换(英语:Fast Fourier T ...
- springIOC的那些事
springIOC动态代理的那些事儿 1.发现问题 今天在使用spring的IOC容器时发现了这样的一个问题: 首先有一个接口定义如下: public interface BookShopSer ...