【第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. overflow:hidden的用法

    overflow:hidden是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很了解. <%@ Page Language="C#& ...

  2. boost库的配置——Linux篇

    Boost库分为两个部分来使用,一是直接使用对应的头文件,二是需要编译安装相应的库才可以使用. 下面是boost在Linux上安装和使用过程(整个boost库全部安装): (1)在www.boost. ...

  3. SharePoint 2013 - Client Side Rendering

    1. Client side rendering 代码结构为: (function () { // Create object that have the context information ab ...

  4. keychains

    keychain在ios中是保存在sqlite数据库中的.这个数据库文件的位置:真机:/private/var/Keychains/keychain-2.db虚拟机:/Users/USER-HOME/ ...

  5. gamemakerstudio:鼠标输入

    标准鼠标输入常量: mb_left 按下鼠标左键 mb_middle 按下鼠标中键 (这可能不是在所有目标平台上都有效) mb_right 按下鼠标右键 mb_none 没有按下任何鼠标键 mb_an ...

  6. 1.6 WEB API NET CORE 使用Redis

    一.Redis安装 https://www.cnblogs.com/cvol/p/9174078.html 二.新建.net core web api程序 选webapi 或者应用程序都可以 三.使用 ...

  7. React学习笔记 - 元素渲染

    React Learn Note 3 React学习笔记(三) 标签(空格分隔): React JavaScript 二.元素渲染 元素是构成react应用的最小单位. 元素是普通的对象. 元素是构成 ...

  8. 转贴:天然VC的迷局

    天然VC的迷局作者:棱子 http://www.jkzgr.net/jiankangguanli/176.html 维生素C对人类来说是一种必不可少的维生素.我们可以通过正常饮食获取所需的VC.市场上 ...

  9. 如何在Chrome development tool里查看C4C前台发送的请求细节

    我们可以在Chrome development tool的network tab里观察到从前台UI发送到后台的HTTP请求: 更多Chrome Development Tool的使用工具请查看我的博客 ...

  10. Computer Hardware

    Computer Hardware Para 1 Computer hardware can be divides into four categories: input hardware, stor ...