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 ...
随机推荐
- Webpack探索【3】--- loader详解
本文主要说明Webpack的loader相关内容.
- SocketAsyncEventArgs里的AcceptSocket能独立存在吗?
独立存在是什么意思? 先来看一个例子.我们知道一个Socket对象(我们叫他ListenScoket)可以调用AcceptAsync并接受一个SocketAsyncEventArgs对象,如果操作成功 ...
- 利用tomcatserver配置https双向认证
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/luo201227/article/details/36897387 首先请保证已经安装好jdk,而且 ...
- R语言数据管理(三):数据读入
R的数据读入非常灵活,即可以在R软件中直接输入,也可以读入外部数据. 一.直接输入数据 ①c()函数 ②scan()函数 其功能类似c()函数,scan()实际上是一种键盘输入数据函数.当输入scan ...
- 纪念下自学QT 第十天 终于写成了串口调试助手
- zend 和 esftp插件开发大型PHP项目,ZEND最常用快捷键
先说一下如何安装zend的esftp插件,下载插件esftp-1.1.1.zip,下载地址http://sourceforge.net/projects/esftp/ 或者 http://yun.ba ...
- sqlalchemy——基本操作
以下所有代码片段都使用了统一的引用,该引用如下: from sqlalchemy import create_engine, ForeignKey from sqlalchemy.ext.declar ...
- ubuntu防火墙
开启防火墙 sudo ufw enable 关闭防火墙 sudo ufw disable 查看防火墙状态 sudo utw status
- 尽量不要在viewWillDisappear:方法中移除通知
1.iOS7新增加了导航控制器侧滑手势,当触发侧滑返回时,会调用系统的viewWillDisappear:方法,取消侧滑返回时又会调用viewWillAppear:方法. 2.在做手势和通知等一系 ...
- 剑指offer——二叉树的深度与平衡二叉树的判断
通过后续遍历,可以减少重复访问 #include <iostream> #include <string> using namespace std; struct Binary ...