【第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. struts2的基本配置

    1.package标签下主要的点在namespace和name,extend上 extend 一般继承自struts-default.xml下,继承其拦截器及一些功能,这个已在本人的拦截器一文中有讲到 ...

  2. node-sass安装失败的解决办法

    安装node-sass一直失败,说起来还是自己把自己坑了,在度娘的帮助下我找到了下面这些资料: 资料1:FQ后再安装node-sass (无效),我使用的是lantern工具翻的墙 资料2:将yarn ...

  3. css随堂笔记(三)

    Css随堂笔记(三) 1 关于背景图片   A 设置背景图片:background-image:url(“图片的路径”):   B 背景图片位置: background-position:1 方位名词 ...

  4. dhtml

    网页换肤:<div> <button>red</button> <button>blue</button> <button>bl ...

  5. <Android 应用 之路> 简易手电筒

    前言 快一个月没有写自己的博客了,由于最近换了工作,换了居住地,所以有一些杂事需要处理,从今天开始恢复正常,不赘述了.进入今天的主题 -– 简易的手电筒. 这个Demo中使用的是比较新的API,M版本 ...

  6. CSS3布局样式

    CSS3多列布局columns 为了能在Web页面中方便实现类似报纸.杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module) ...

  7. Anaconda教程

      python虚拟环境 当安装新的外部python包时,为了保证原版python的纯净,避免其他项目调试时出现错误,可使用Anaconda创建虚拟python进行调试和操作 创建新的虚拟环境(Win ...

  8. 基于VB语言对SolidWorks参数化设计的二次开发

    0 引言 随着数字信息化进程的快速推进,如今三维CAD技术在越来越多的企业当中得到运用.为了降低在设计生产中的成本,缩短设计周期,增强企业竞争力,三维参数化技术随之应声,它凭借更贴近现代概念的设计以及 ...

  9. 屏幕  z

    private   void   FullScreen()   //全屏      {      SizeMode   =   2;      FormBorderStyle   =   FormBo ...

  10. RAC环境修改数据库字符集

    sql> alter system set cluster_database=false scope=spfile sid='qcjk1';   --------注意sid根据不同环境要修改 在 ...