hdoj 4200 Bad Wiring(贪心)
来源:互联网 发布:dnf驱魔技能改版数据 编辑:程序博客网 时间:2024/05/18 02:08
【题目大意】:给出n盏灯,给出一个区间范围D。每盏灯可以开关1次,每次按第i盏灯[i-d,i+d]的灯全部变,现在给你灯的初始状态,问多少次可以全部灭去。不能输出“impossible”
【解题思路】:1、开关灯的顺序与最小次数无关。2、枚举前d盏灯的操作方式(一共2^d种)对初始状态进行修改,可改可不改。3、然后对于d之后的灯i,如果它的前i-d盏灯是亮着的话,势必要由它操作最后一次,所以经过这样一轮操作之后,我们可以确保前n-d盏灯一定是灭的。4、但是对于最后的d盏灯,我们无法再对其做出任何修改,所以,势必必须满足全灭的时候才能够满足题意。 YY贪心。。。。。。
下午比赛的时候不知道为什么过不了,各种TLE,各种调整之后还是TLE。赛后过了,这是过了的版本,还要是C++,Orz。稍微动一下就会Tle不知道为什么,其实我觉得没多大关系。
【代码】:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <queue>#include <cmath>#include <string>#include <cctype>#include <map>#include <iomanip> using namespace std; #define eps 1e-8#define pi acos(-1.0)#define inf 1<<30#define linf 1LL<<60#define pb push_back#define lc(x) (x << 1)#define rc(x) (x << 1 | 1)#define lowbit(x) (x & (-x))#define ll long longint a[110],now[110];int n,ans,tmp,d;int main(){ int T; scanf("%d",&T); while (T--){ scanf("%d%d",&n,&d); for (int i=0; i<n; i++) scanf("%d",&a[i]); ans=inf; for (int i=0; i<=(1<<min(d,n))-1; i++){ for (int j=0; j<n; j++) now[j]=a[j]; tmp=0; for (int j=0; j<d; j++) if (i&(1<<j)) { tmp++; for (int l=max(0,j-d); l<=j+d && l<n; l++) now[l]^=1; } for (int j=d; j<n; j++) if (now[j-d]){ tmp++; for (int l=max(0,j-d); l<=j+d && l<n; l++) now[l]^=1; } for (int j=n-d; j<n; j++) if (now[j]) {tmp=inf; break;} ans=min(ans,tmp); } if (ans==inf)printf("impossible\n"); else printf("%d\n",ans); } return 0;}
- hdoj 4200 Bad Wiring(贪心)
- HDOJ 4200 Bad Wiring 高斯消元
- hdu 4200 Bad Wiring 高斯消元
- HDU 4200 Bad Wiring(高斯消元)
- HDU 4200 Bad Wiring 高斯消元 +枚举自由变元
- HDU4200 Bad Wiring 高斯消元+枚举
- hdoj-3348-贪心
- hdoj 4544 贪心
- HDOJ-1050贪心
- HDOJ 4849 Task (贪心)
- hdoj 4864 Task 【贪心】
- [HDOJ 4864] Task [贪心]
- HDOJ 4864 Task 贪心
- 【贪心】 HDOJ 5037 Frog
- HDOJ贪心算法
- hdoj 5240 Exam【贪心】
- hdoj 5037 Frog【贪心】
- hdoj 4864 Task 【贪心】
- OpenGL绘制旋转三角形实例
- Android 中关于 【Cursor】 类的介绍
- 第七周任务2
- android代码重构日记(一)——命名规范
- 哈佛公开课《Positive Pyschology 1504》学习笔记 -- Change
- hdoj 4200 Bad Wiring(贪心)
- experiment: Unicode ini wrapper UTF16_LE BOM Operation
- final 的语义
- 程序员10大境界【走在路上,潜心修行】
- padding(内边距) margin(外边距)使用区别
- WinXP利用无线网卡做AP共享上网
- C/C++ 日期和时间
- Random Thoughts #6 科技改变生活
- const用法