Party Lamps chapter 2.2
又是来回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相关推荐
- python一对一辅导教程:Computational Problems for Physics chapter 1-B Code Listings 1.7 - 1.11
作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 . 本博客为一对一辅导学生python代码的教案, 获得学生允许公开. 具体辅导内容为<Computati ...
- 语料库(精华版)chapter 3/4/5
Chapter 3 雅思听力特别名词语料库 Chapter 4 雅思听力形容词/副词语料库 Chapter 5 雅思听力吞音/混合训练 Test Paper 1 Test Paper 2 Test P ...
- usaco party lamps
不说什么了这题真的解不出来.看了题解,规律一层套一层,题目越来越难了加油吧. /* ID:jinbo wu PROG:lamps LANG:C++ */ #include<bits/stdc++ ...
- python使用fpdf生成pdf文件章节(chapter),包含:页眉、页脚、章节主题、数据排版等;
python使用fpdf生成pdf文件章节(chapter),包含:页眉.页脚.章节主题.数据排版等: #仿真数据 The year 1866 was marked by a bizarre deve ...
- python使用fpdf生成pdf章节(chapter)文件包含:页眉、页脚、章节主体、章节内容等;
python使用fpdf生成pdf章节(chapter)文件包含:页眉.页脚.章节主体.章节内容等: 目录
- Chapter 1 快速搭建-服务的注册与发现(Eureka)
Chapter 1 快速搭建-服务的注册与发现(Eureka) 一.Spring Cloud简介 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代 ...
- 吴恩达Coursera机器学习 - Chapter 4 多变量线性回归
Chapter 4 – 多变量线性回归(Linear Regression with Multiple Variables) 相比第二章,这一章无非就是数据集的特征数由一个变为多个,并引入了矩阵的概念 ...
- Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证
原文: Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证 原文出处:http://blog.csdn.net/dba_hua ...
- Chapter 11 替代变量
Chapter 11 替代变量 select empno, ename, sal from emp where sal >= 1500 select empno, ename, sal from ...
最新文章
- 软件破解系列之OD中断方法
- Atom:A hackable text editor for the 21st Century
- why in GM0 the extAddTo Controller is not loaded
- python --- 线程
- 史上最全近百条Oracle DBA日常维护SQL脚本指令
- fstab自动挂载_Linux系统挂载硬盘详解
- java用DFA实现脏词过滤以及用FileAlterationListenerAdaptor实现对资源文件修改的动态监听
- HDU 3153 Pencils from the 19th Century(数学)
- 6.性能之巅 洞悉系统、企业与云计算 --- CPU
- [转载] C#面向对象设计模式纵横谈——11. Facede外观模式
- 软件缺陷分析—软件测试之犯罪心理学
- 利用picasa2简单制作超炫壁画
- MySQL 计算年龄
- 使用Ultra Librarian生成Cadence Allegro的PCB封装库和OrCAD Capture CIS的原理图库
- 2021-02-28
- 【已解决】找到无效的 Gradle JDK 配置(invalid Gradle JDK configuration found)
- c语言读心术原理,无聊的时候写的读心术小程序
- Chapter 22 UDP and TCP 第二十二章UDP和TCP协议作业
- Yac - PHP扩展
- rasa x The path ‘config.yml‘ does not exist. Please make sure to use the default location
热门文章
- css padding效果,CSS Padding(填充)
- Python笔记-类的单例模式及重载打印
- HTTP中CORS跨域请求的实现(C++|Qt框架实现)
- Qt线程间通信-自定义事件
- WEB安全基础-SQL注入基础
- 计算机用户被锁定如何解除,win10账户被锁定了怎么解除
- mysql数据库作业_mysql数据库操作练习
- python中的threading_Python中Threading用法详解
- python注销代码_django用户注册、登录、注销和用户扩展的示例
- openvas 配置遇到的问题