当前位置: 首页 > news >正文

USACO2.2 Party Lamps(lamps)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

        按一个按钮两次相当于没按,每个按钮按或者不按的情况,一共有2^4=16种状态。枚举每个按钮是否按下,及时根据按键总数终止不可能的情况,注意按钮1==按钮2+按钮3的作用,因此在c%4==2时注意sum!=1的情况。虽然灯最多有100盏,但6盏以后的灯都是前6盏的重复,因此只需保存前六盏的状态。最后对所有合适的情况排序输出。

 

/*
ID:jzzlee1
PROG:lamps
LANG:C++
Dear double_tings:
i love you.
*/
//#include<iostream>
#include<fstream>
#include<cmath>
#include<string>
#include<cstring>
#include<set>
using namespace std;
ifstream cin("lamps.in");
ofstream cout("lamps.out");
int n,c,l[100],ll[7],m[100],mm[7];bool ans[100][110];
bool a[7]={0};
set<string> set1;
bool check()
{
	int i;
	for(i=1;i<7;i++)
	{
		if(ll[i]==1&&a[i]==0)
			return 0;
		if(mm[i]==1&&a[i]==1)
			return 0;
	}
	return 1;
}
int main()
{
	cin>>n>>c;
	int i,x;
	for(i=0;cin>>x&&x!=-1;++i)
	{
		l[i]=x;
		if(x%6)
			ll[x%6]=1;
		else ll[6]=1;
	}
	for(i=0;cin>>x&&x!=-1;++i)
	{
		m[i]=x;
		if(x%6)
			mm[x%6]=1;
		else mm[6]=1;
	}
	int count=0,d[5];bool flag=0;
	for(d[1]=0;d[1]<=1;++d[1])
		for(d[2]=0;d[2]<=1;++d[2])
			for(d[3]=0;d[3]<=1;++d[3])
				for(d[4]=0;d[4]<=1;++d[4])
				{
					int sum=0;
					for(i=1;i<=4;++i)
						sum+=d[i];
					if(c==0&&sum!=0)
						continue;
					else if(c!=0&&c%4==0&&sum!=4&&sum!=2&&sum!=0)
						continue;
					else if(c%4==3&&sum!=3&&sum!=1)
						continue;
					else if(c%4==2&&sum!=2&&sum!=1&&sum!=0)
						continue;
					else if(c%4==1&&sum!=1)
						continue;
					for(i=1;i<=6;i++)
						a[i]=1;
					if(d[1])
						for(i=1;i<7;++i)
							a[i]=!a[i];
					if(d[2])
						for(i=1;i<7;i+=2)
							a[i]=!a[i];
					if(d[3])
						for(i=2;i<7;i+=2)
							a[i]=!a[i];
					if(d[4])
						for(i=1;i<7;i+=3)
							a[i]=!a[i];
					if(check())
					{
						string str;
						flag=1;a[0]=a[6];
						for(i=1;i<=n;++i)
							str+=a[i%6]+'0';
						set1.insert(str);
					}
					
				}
				set<string>::iterator iter;
				for(iter=set1.begin();iter!=set1.end();++iter)
				{
					cout<<*iter;
					cout<<endl;
				}
	if(!flag)
		cout<<"IMPOSSIBLE"<<endl;
	return 0;
}

转载于:https://my.oschina.net/u/347565/blog/62930

相关文章:

  • [php] 数据结构算法(PHP描述) 快速排序 quick sort
  • Macbook双系统多分区的解决方案
  • java好的IO示例
  • MyBatis的动态SQL详解
  • 目标模型和现实模型
  • 在pictureBox中拖动图片的实现代码
  • linux-文件类型
  • dll分析
  • 选择Drupal的10大理由
  • argc argv 的使用
  • 劣质电源线引发的硬盘故障
  • struts2常用标签
  • ip_vs实现分析(3)
  • linux 系统基础知识 - 卷管理
  • 解决 umount 时出现的 Device is busy
  • Android交互
  • CSS魔法堂:Absolute Positioning就这个样
  • eclipse(luna)创建web工程
  • Hexo+码云+git快速搭建免费的静态Blog
  • IDEA 插件开发入门教程
  • Js基础知识(一) - 变量
  • k8s如何管理Pod
  • MySQL QA
  • pdf文件如何在线转换为jpg图片
  • python3 使用 asyncio 代替线程
  • RxJS: 简单入门
  • Vue UI框架库开发介绍
  • WebSocket使用
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 记一次删除Git记录中的大文件的过程
  • 三分钟教你同步 Visual Studio Code 设置
  • 温故知新之javascript面向对象
  • 我有几个粽子,和一个故事
  • 智能网联汽车信息安全
  • 1.Ext JS 建立web开发工程
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #DBA杂记1
  • #include到底该写在哪
  • #Linux(make工具和makefile文件以及makefile语法)
  • #pragma data_seg 共享数据区(转)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)插入排序
  • . Flume面试题
  • .Net 4.0并行库实用性演练
  • .NET CLR Hosting 简介
  • .NET 设计一套高性能的弱事件机制
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .Net多线程总结
  • .NET下的多线程编程—1-线程机制概述
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)