【第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

(Tab:如果我有没讲清楚的地方可以直接在邮箱lucky_glass@foxmail.com email我,在周末我会尽量解答并完善博客~

【前行】◇第3站◇ Codeforces Round #512 Div2的更多相关文章

  1. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  2. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  3. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  4. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  5. Codeforces Round #626 Div2 D,E

    比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...

  6. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  7. codeforces Round#380 div2

    1.字符串替换ogo+go…换成*** 思路:找ogo记录g位置,做初步替换和标记,非目标字母直接输出, 间隔为2的判断是否一个为标记g,一个为非标记做***替换 #include<iostre ...

  8. CodeForces Round 199 Div2

    完了,这次做扯了,做的时候有点发烧,居然只做出来一道题,差点被绿. My submissions     # When Who Problem Lang Verdict Time Memory 443 ...

  9. Codeforces Round #359 div2

    Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...

随机推荐

  1. poj 1655 树的重心 && define注意事项

    http://blog.csdn.net/acdreamers/article/details/16905653 题意:给定一棵树,求树的重心的编号以及重心删除后得到的最大子树的节点个数size,如果 ...

  2. Spring课程 Spring入门篇 5-2 配置切面aspect

    本节主要讲了在xml中配置切面的demo 1 解析 1.1 配置切面xml 1.2 配置切面xml 1.3 问:什么是动态代理? 2 代码演练 2.1 配置切面xml 1 解析 1.1 配置切面xml ...

  3. 微服务学习笔记二:Eureka服务注册发现

    Eureka服务注册发现 服务发现:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移. 1. Service Discovery: Eureka S ...

  4. rest-framework框架——视图三部曲

    一.mixins类编写视图 1.配置url urlpatterns = [ ... re_path(r'^authors/$', views.AuthorView.as_view(), name=&q ...

  5. android Viewpager取消预加载及Fragment方法的学习

    1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载.通过设置setOffscreenPageLimit(int numbe ...

  6. 删除排序数组中的重复数字 - C++

    class Solution { public: /** * @param A: a list of integers * @return : return an integer */ int rem ...

  7. ORACLE中一个字符占多少字节?

    问题描述 或许你会说一个中文字符占2个字节,这是一定的?如何计算一个字符串的字节数? 解决方案 在oracle中一个字符特别是中文占几个字节是不同的. 比如我创立一个表create table tes ...

  8. Microsoft Translator:打破语言障碍 拓展全球沟通新机遇

    作者:Olivier Fontana, 微软研究院Microsoft Translator产品战略总监 世界越来越小,全球协作.共同创新已经成为常态.在微软研究院,我们对此尤为感同身受——从北京到雷德 ...

  9. C#发送电子邮件 (异步) z

    ///验证电子邮件的正则表达式   string emailStr = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([ ...

  10. IOS UIDevice距离传感器(打开 关闭)

    ●  什么是传感器 ●  传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上 ●  iPhone5中内置的传感器有 ●  运动传感器\加速度传感器\加速计(Motion/Acceleromet ...