hdu 5600 N bulbs 想法+奇偶讨论
http://acm.hdu.edu.cn/showproblem.php?pid=5600
本文重在分析该题目的思路,代码极其短,但是想到这个题目的思路却是挺复杂的过程。
思路
自己拿到题目也想到了很多,用了一些小的样例去找寻一些规律,但是还是没有完全找到方法。 这个题目中重要的一点是你要能发现操作次数个数与N的奇偶的规律,(N是电灯的个数)N是奇数,操作次数一定是奇数,N是偶数,操作次数是偶数。 那么这幅图可以直观的理解上面这个结论。

下面你还可以得到一个结论,如果我要是的所有的灯全部熄灭的话,1要变0,0还得是0,1的操作次数一定是奇数次,0的操作次数一定是偶数次。 我们可以得到下面这个公式

所以我们毫无疑问地要说,如果1的个数的奇偶关系与N的奇偶不同那么它一定不可以全部熄灭。
接下来,如果1的个数与N的个数奇偶相同,那0的个数是一定是偶数,那么也就是说在整个序列里,0可以两个两个的取,回到之前找规律时发现的一个重要特点:我们发现当我们从1走到i时,假设我们往回走到左边某个点k,再走回来i,那么你会发现有且仅有k和i这两个数相当于没有操作(因为走了偶数次)。也就是说我们可以每次任意选择这个序列里的两个0作为没有操作,然而不需操作的0的个数恰好是偶数个。
见下图

代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int t,n,num,c;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
c = ;
for(int i = ;i<=n;i++)
{
scanf("%d",&num);
if(num==)
c++;
}
if((c%)==(n%))
printf("YES\n");
else
printf("NO\n");
}
return ;
}
hdu 5600 N bulbs 想法+奇偶讨论的更多相关文章
- BestCoder Round #67 (div.2) N bulbs(hdu 5600)
N bulbs Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- HDU 5375——Gray code——————【dp||讨论】
Gray code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- HDU 6665 Calabash and Landlord (分类讨论)
2019 杭电多校 8 1009 题目链接:HDU 6665 比赛链接:2019 Multi-University Training Contest 8 Problem Description Cal ...
- HDU 1010Tempter of the Bone(奇偶剪枝回溯dfs)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu 5600 BestCoder Round #67 (div.2)
N bulbs Accepts: 275 Submissions: 1237 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 655 ...
- hdu 4655 Cut Pieces(想法题)
Cut Pieces Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Tota ...
- HDU 2147 kiki's game (奇偶博弈)
题意:给定一个 n * m 的格子,从右上角(1, m) 开始每个玩家只能从向下,向左,或者向左下走,谁不能走,谁输. 析:自己做出来,看了网上的几个博客,好像都没说为什么是只有全奇的情况才会输,个人 ...
- HDU 5705 Clock(模拟,分类讨论)
Clock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submi ...
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
随机推荐
- JavaScript点击事件-一个按钮触发另一个按钮
<input type="button" value="Click" id="C" onclick="Go();" ...
- python __nonzero__方法
类的nonzero方法用于将类转换为布尔值.通常在用类进行判断和将类转换成布尔值时调用.比如语句if A: print 'foo'中就会调用A.nonzero()来判断.下面这个程序应该能帮助你理解n ...
- 从 零开始 无差错 装好nginx+PHP
由于这两天 一直有人追问 nginx为何报错,为何php没装好啥的,大多原因是 : 1.编译与yum混合安装,导致很多包的路径不对,进而报错 2.yum源比较旧,导致 与新版本的php不匹配 3.安装 ...
- C#泛型命名潜规则
public class List<T>{} public class LinkedList<T>{} public class SortedList<TKey,TVal ...
- crontab定时任务(待补充)
cron是一个ubuntu下的后台进程,用来定期的执行一些任务 想让cron执行你指定的任务,首先就要编辑crontab文件.crontab是一个文本文件,用来存放你要运行的命令 第一种 vim /e ...
- LeetCode:长度最小的子数组【209】
LeetCode:长度最小的子数组[209] 题目描述 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 ...
- LeetCode:加油站【134】
LeetCode:加油站[134] 题目描述 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要 ...
- Vue:实践学习笔记(1)——快速使用
Vue:实践学习笔记(1)——快速使用 Vue基础知识 0.引入Vue 官方地址:Vue的官方下载地址 Vue推荐博客:keepfool 在你的程序中快速引入Vue: <!-- 开发环境版本,包 ...
- Python 3 面向对象 一
Python 3 面向对象 一.面向过程-->面向对象 面向过程:根据业务逻辑从上到下堆叠代码,即先干什么再干什么,基于面向过程去设计程序就好比在设计一条流水线,是一种机械式的思维方式 函数式: ...
- QT下的QProcess调用外部程序
头文件widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; ...