题目大意:一排灯有n个,有4种开关,每种开关能改变一些灯现在的状态(亮的变暗,暗的变亮)现在已知一些灯的亮暗情况,问所以可能的情况是哪些

思路:同一种开关开两次显然是没效果的,那么枚举每个开关是否开就好了,还是暴力大法好

 /*{
ID:a4298442
PROB:lamps
LANG:C++
}
*/
#include<iostream>
#include<fstream>
#include<cstring>
#include<algorithm>
#define maxn 109
using namespace std;
ifstream fin("lamps.in");
ofstream fout("lamps.out");
//#define fin cin
//#define fout cout
int lamp[maxn],temp[maxn],n1,n2,a[maxn],b[maxn];
struct T
{
char ch[maxn];
}ans[maxn];
void but1(int n)
{
for(int i=;i<=n;i++)lamp[i]^=;
}
void but2(int n)
{
for(int i=;i<=n;i+=)lamp[i]^=;
}
void but3(int n)
{
for(int i=;i<=n;i+=)lamp[i]^=;
}
void but4(int n)
{
for(int i=;i*+<=n;i++)lamp[i*+]^=;
}
int check(int n,int c,int count_now)
{
for(int i=;i<n1;i++)if(lamp[a[i]]==)return ;
for(int i=;i<n2;i++)if(lamp[b[i]]==)return ;
if(count_now>c)return ;
int u=c-count_now;
if(u&)return ;
return ;
}
int cmp(T x, T y)
{
return strcmp(x.ch+,y.ch+)>=?false:true;
}
int main()
{
int n,c;
fin>>n>>c;
while(fin>>a[++n1]&&a[n1]!=-);
while(fin>>b[++n2]&&b[n2]!=-);
for(int i=;i<=n;i++)temp[i]=;
int h=;
for(int i=;i<=(1LL<<)-;i++)
{
int count_now=;
memcpy(lamp,temp,sizeof(lamp));
for(int j=,idx=;j<=i;j<<=,idx++)if((i&j)!= )
{
count_now++;
if(idx==)but1(n);
if(idx==)but2(n);
if(idx==)but3(n);
if(idx==)but4(n);
}
if(check(n,c,count_now))
{
h++;
for(int i=;i<=n;i++)
{
ans[h].ch[i]=lamp[i]+'';
}
}
}
if(h==)fout<<"IMPOSSIBLE"<<endl;else
{
sort(ans+,ans++h,cmp);
for(int i=;i<=h;i++)fout<<ans[i].ch+<<endl;
}
return ;
}

USACO Party Lamps的更多相关文章

  1. USACO Party Lamps 【Binary code solvution】【规律】

    写这道题目的时候遇到了一个令人诧异的问题,就是平台上跑来的结果和我本机跑起来的结果不一样. 后来Debug了之后才发现是我数组开小了,只开到100 的数组竟然都去访问他170位的地址肯定要跪成翔啊.. ...

  2. USACO 2.2 Party Lamps 派对灯 (lamps)

    题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码.这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭 ...

  3. 【USACO 2.2】Party Lamps

    四种开关,n盏灯,1:改变所有灯状态,2:改变奇数灯状态,3:改变偶数灯状态,4:改变3k+1灯状态 给你按开关的总次数c和部分灯限制条件(开或关),一开始都是开着的.($c \leq 10000,n ...

  4. USACO Section 2.2: Party Lamps

    这题有个小技巧, 按一个键两次等于没按,所以如果depsum > 16的话其实不用做深搜到depsum次,而只要16次就可以了. /* ID: yingzho1 LANG: C++ TASK: ...

  5. USACO lamps

    IOI 98称号.然后,它似乎没有很困难.即使我能做到这一点微弱的残留物.所有的button按两次不按,高达因此实际上总的等效按4二级,首先C往下<=4,则搜索将能直接照射,总共只有16状态(事 ...

  6. USACO Section2.2 Party Lamps 解题报告 【icedream61】

    lamps解题报告------------------------------------------------------------------------------------------- ...

  7. POJ 1176 Party Lamps&& USACO 2.2 派对灯(搜索)

    题目地址 http://poj.org/problem?id=1176 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都 ...

  8. Luogu USACO Training 刷水记录

    开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...

  9. luoguP1468 派对灯 Party Lamps x

    P1468 派对灯 Party Lamps 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当 ...

随机推荐

  1. sql service 查询分析数据库

    --学会通配符 https://blog.csdn.net/blackfwhite/article/details/80382849 --学会变量中的变量 https://www.cnblogs.co ...

  2. SQL还原数据库

    还原一个备份数据库的经历. 首先,手头上有工程文件及相应的数据库的备份. 步骤: 1.在工程文件里找到配置文件,我这个是在bin目录里找到config.ini 2.双击打开它,里面有一些数据库的相关信 ...

  3. eclipse报错MA

    今天有个总监晒了张tomcat7.0崩溃忘记怎么搞了,大家都在吐槽"一个[总监](经常水群)竟然不会这个".敲上来. Problem Occurred系列: 'Starting T ...

  4. Tensorflow_入门学习_2_一个神经网络栗子

    3.0 A Neural Network Example 载入数据: from tensorflow.examples.tutorials.mnist import input_data mnist ...

  5. python基本排序算法(一)

    一.冒泡排序 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”. 冒泡排序算法的原理如下: 比 ...

  6. metasploit-shellcode生成

    0x00 安装metasploit $ curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/t ...

  7. ROP之linux_x64知识杂记

    蒸米大神谈ROPwww.vuln.cn/6645 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御 ...

  8. scanf函数详解

    函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]);scanf()函数是通用终端格式化输入函数,它从标准输入设备(键 ...

  9. PAT (Basic Level) Practise (中文)-1038. 统计同成绩学生(20)

    PAT (Basic Level) Practise (中文)-1038. 统计同成绩学生(20)    http://www.patest.cn/contests/pat-b-practise/10 ...

  10. fckeditor的实例

                            第一步:去官网下载,删除多余的包 删除所有”_”开头的文件和文件夹   删除FCKeditor的目录下:   fckeditor.afp fckedit ...