又是来回2次等于没按,一个结构体 no3odd,speodd,no3even,speeven代表非-1%3 奇数偶数,普通奇数偶数。

然后当按1-4次时,归纳出1次对应4种情况,2次对应0次和2种各一次(1+6),3次对应(1,3)(4+4),4次对应(0,2,4)(1+6+4)

超过4以后的偶数情况等同于4,偶数等同于3

随后根据C取值枚举便可

/*ID: hubiao cavePROG: lampsLANG: C++*/#include<iostream>#include<fstream>#include<string>
#include<set>using namespace std;struct Bu
{bool no3even;bool speeven;bool no3odd;bool speodd;Bu(){}Bu(int _noev,int _spee,int _no,int _sp):no3even(_noev),speeven(_spee),no3odd(_no),speodd(_sp){;}
};Bu buf[4][6]={{Bu(0,0,0,0),Bu(1,1,0,0),Bu(0,0,1,1),Bu(1,0,1,0)}
,{Bu(0,0,1,1),Bu(1,1,0,0),Bu(0,1,0,1),Bu(0,0,0,0),Bu(1,0,0,1),Bu(0,1,1,0)}
,{Bu(1,1,1,1),Bu(0,1,1,0),Bu(1,0,0,1),Bu(0,1,0,1)}
,{Bu(1,0,1,0)}};
/*
只按1次,4种
只按2次  可能是两种灯6,也可能是1种灯重复相当没按0
只按3次  同理相当于1种等,或者3种灯
只按4次  相当0,2,4
往后奇数次 与只按3相同,偶数次与4相同
*/set<string> ss;int main(){ifstream fin("lamps.in");ofstream fout("lamps.out");int no3even=-1,speeven=-1,no3odd=-1,speodd=-1;int N,C;fin>>N>>C;int lampOn,lampOff;while(fin>>lampOn,lampOn!=-1){if(lampOn%2==0){if((lampOn-1)%3==0){speeven=1;continue;}else{no3even=1;continue;}}else{if((lampOn-1)%3==0){speodd=1;continue;}else{no3odd=1;continue;}}}while(fin>>lampOff,lampOff!=-1){if(lampOff%2==0){if((lampOff-1)%3==0){if(speeven==1){fout<<"IMPOSSIBLE"<<endl;return 0;}speeven=0;continue;}else{if(no3even==1){fout<<"IMPOSSIBLE"<<endl;return 0;}no3even=0;continue;}}else{if((lampOff-1)%3==0){if(speodd==1){fout<<"IMPOSSIBLE"<<endl;return 0;}speodd=0;continue;}else{no3odd=0;if(no3odd==1){fout<<"IMPOSSIBLE"<<endl;return 0;}continue;}}}if(C==0){if(no3even==0||no3odd==0||speodd==0||speeven==0){fout<<"IMPOSSIBLE"<<endl;return 0;}string str;for(int i=1;i<=N;++i){str+='1';}fout<<str<<endl;return 0;}if(C<=4){switch(C%4){case 1:{for(int i=0;i<=3;i++){if(buf[0][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[0][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[0][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[0][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int i=1;i<=N;i++){if(i%2==0){if((i-1)%3==0)str+='0'+buf[0][i].speeven;elsestr+='0'+buf[0][i].no3even;}else{if((i-1)%3==0)str+='0'+buf[0][i].speodd;elsestr+='0'+buf[0][i].no3odd;}}ss.insert(str);}break;}case 2:{string str;for(int i=1;i<=N;i++){str+='1';if(i==N)ss.insert(str);}for(int i=0;i<=5;i++){if(buf[1][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[1][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[1][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[1][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int i=1;i<=N;i++){if(i%2==0){if((i-1)%3==0)str+='0'+buf[1][i].speeven;elsestr+='0'+buf[1][i].no3even;}else{if((i-1)%3==0)str+='0'+buf[1][i].speodd;elsestr+='0'+buf[1][i].no3odd;}}ss.insert(str);}break;}case 3:{for(int i=0;i<=3;i++){if(buf[0][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[0][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[0][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[0][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int j=1;j<=N;j++){if(j%2==0){if((j-1)%3==0)str+='0'+buf[0][i].speeven;elsestr+='0'+buf[0][i].no3even;}else{if((j-1)%3==0)str+='0'+buf[0][i].speodd;elsestr+='0'+buf[0][i].no3odd;}}ss.insert(str);}for(int i=0;i<=3;i++){if(buf[2][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[2][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[2][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[2][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int j=1;j<=N;j++){if(j%2==0){if((j-1)%3==0)str+='0'+buf[2][i].speeven;elsestr+='0'+buf[2][i].no3even;}else{if((j-1)%3==0)str+='0'+buf[2][i].speodd;elsestr+='0'+buf[2][i].no3odd;}}ss.insert(str);}break;}case 0:{string str;for(int i=1;i<=N;i++){str+='1';if(i==N)ss.insert(str);}for(int i=0;i<=5;i++){if(buf[1][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[1][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[1][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[1][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int j=1;j<=N;j++){if(j%2==0){if((j-1)%3==0)str+='0'+buf[1][i].speeven;elsestr+='0'+buf[1][i].no3even;}else{if((j-1)%3==0)str+='0'+buf[1][i].speodd;elsestr+='0'+buf[1][i].no3odd;}}ss.insert(str);}for(int i=0;i<1;i++){if(buf[3][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[3][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[3][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[3][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int j=1;j<=N;j++){if(j%2==0){if((j-1)%3==0)str+='0'+buf[3][i].speeven;elsestr+='0'+buf[3][i].no3even;}else{if((j-1)%3==0)str+='0'+buf[3][i].speodd;elsestr+='0'+buf[3][i].no3odd;}}ss.insert(str);}}break;}}else{if(C%2){for(int i=0;i<=3;i++){if(buf[0][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[0][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[0][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[0][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int j=1;j<=N;j++){if(j%2==0){if((j-1)%3==0)str+='0'+buf[0][i].speeven;elsestr+='0'+buf[0][i].no3even;}else{if((j-1)%3==0)str+='0'+buf[0][i].speodd;elsestr+='0'+buf[0][i].no3odd;}}ss.insert(str);}for(int i=0;i<=3;i++){if(buf[2][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[2][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[2][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[2][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int i=1;i<=N;i++){if(i%2==0){if((i-1)%3==0)str+='0'+buf[2][i].speeven;elsestr+='0'+buf[2][i].no3even;}else{if((i-1)%3==0)str+='0'+buf[2][i].speodd;elsestr+='0'+buf[2][i].no3odd;}}ss.insert(str);}}else{if(no3even==0||no3odd==0||speodd==0||speeven==0){;}else{string str;for(int i=1;i<=N;i++){str+='1';if(i==N)ss.insert(str);}}for(int i=0;i<=5;i++){if(buf[1][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[1][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[1][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[1][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int j=1;j<=N;j++){if(j%2==0){if((j-1)%3==0)str+='0'+buf[1][i].speeven;elsestr+='0'+buf[1][i].no3even;}else{if((j-1)%3==0)str+='0'+buf[1][i].speodd;elsestr+='0'+buf[1][i].no3odd;}}ss.insert(str);}for(int i=0;i<1;i++){if(buf[3][i].no3even!=no3even){if(no3even!=-1)continue;}if(buf[3][i].speeven!=speeven){if(speeven!=-1)continue;}if(buf[3][i].no3odd!=no3odd){if(no3odd!=-1)continue;}if(buf[3][i].speodd!=speodd){if(speodd!=-1)continue;}string str;for(int j=1;j<=N;j++){if(j%2==0){if((j-1)%3==0)str+='0'+buf[3][i].speeven;elsestr+='0'+buf[3][i].no3even;}else{if((j-1)%3==0)str+='0'+buf[3][i].speodd;elsestr+='0'+buf[3][i].no3odd;}}ss.insert(str);}}}if(ss.empty()){fout<<"IMPOSSIBLE"<<endl;return 0;}for(set<string>::iterator it=ss.begin();it!=ss.end();it++){fout<<*it<<endl;}return 0;}

转载于:https://www.cnblogs.com/cavehubiao/p/3306570.html

Party Lamps chapter 2.2相关推荐

  1. python一对一辅导教程:Computational Problems for Physics chapter 1-B Code Listings 1.7 - 1.11

    作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 . 本博客为一对一辅导学生python代码的教案, 获得学生允许公开. 具体辅导内容为<Computati ...

  2. 语料库(精华版)chapter 3/4/5

    Chapter 3 雅思听力特别名词语料库 Chapter 4 雅思听力形容词/副词语料库 Chapter 5 雅思听力吞音/混合训练 Test Paper 1 Test Paper 2 Test P ...

  3. usaco party lamps

    不说什么了这题真的解不出来.看了题解,规律一层套一层,题目越来越难了加油吧. /* ID:jinbo wu PROG:lamps LANG:C++ */ #include<bits/stdc++ ...

  4. python使用fpdf生成pdf文件章节(chapter),包含:页眉、页脚、章节主题、数据排版等;

    python使用fpdf生成pdf文件章节(chapter),包含:页眉.页脚.章节主题.数据排版等: #仿真数据 The year 1866 was marked by a bizarre deve ...

  5. python使用fpdf生成pdf章节(chapter)文件包含:页眉、页脚、章节主体、章节内容等;

    python使用fpdf生成pdf章节(chapter)文件包含:页眉.页脚.章节主体.章节内容等: 目录

  6. Chapter 1 快速搭建-服务的注册与发现(Eureka)

    Chapter 1 快速搭建-服务的注册与发现(Eureka) 一.Spring Cloud简介 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代 ...

  7. 吴恩达Coursera机器学习 - Chapter 4 多变量线性回归

    Chapter 4 – 多变量线性回归(Linear Regression with Multiple Variables) 相比第二章,这一章无非就是数据集的特征数由一个变为多个,并引入了矩阵的概念 ...

  8. Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证

    原文: Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证 原文出处:http://blog.csdn.net/dba_hua ...

  9. Chapter 11 替代变量

    Chapter 11 替代变量 select empno, ename, sal from emp where sal >= 1500 select empno, ename, sal from ...

最新文章

  1. 软件破解系列之OD中断方法
  2. Atom:A hackable text editor for the 21st Century
  3. why in GM0 the extAddTo Controller is not loaded
  4. python --- 线程
  5. 史上最全近百条Oracle DBA日常维护SQL脚本指令
  6. fstab自动挂载_Linux系统挂载硬盘详解
  7. java用DFA实现脏词过滤以及用FileAlterationListenerAdaptor实现对资源文件修改的动态监听
  8. HDU 3153 Pencils from the 19th Century(数学)
  9. 6.性能之巅 洞悉系统、企业与云计算 --- CPU
  10. [转载] C#面向对象设计模式纵横谈——11. Facede外观模式
  11. 软件缺陷分析—软件测试之犯罪心理学
  12. 利用picasa2简单制作超炫壁画
  13. MySQL 计算年龄
  14. 使用Ultra Librarian生成Cadence Allegro的PCB封装库和OrCAD Capture CIS的原理图库
  15. 2021-02-28
  16. 【已解决】找到无效的 Gradle JDK 配置(invalid Gradle JDK configuration found)
  17. c语言读心术原理,无聊的时候写的读心术小程序
  18. Chapter 22 UDP and TCP 第二十二章UDP和TCP协议作业
  19. Yac - PHP扩展
  20. rasa x The path ‘config.yml‘ does not exist. Please make sure to use the default location

热门文章

  1. css padding效果,CSS Padding(填充)
  2. Python笔记-类的单例模式及重载打印
  3. HTTP中CORS跨域请求的实现(C++|Qt框架实现)
  4. Qt线程间通信-自定义事件
  5. WEB安全基础-SQL注入基础
  6. 计算机用户被锁定如何解除,win10账户被锁定了怎么解除
  7. mysql数据库作业_mysql数据库操作练习
  8. python中的threading_Python中Threading用法详解
  9. python注销代码_django用户注册、登录、注销和用户扩展的示例
  10. openvas 配置遇到的问题