USACO Party Lamps
题目大意:一排灯有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的更多相关文章
- USACO Party Lamps 【Binary code solvution】【规律】
写这道题目的时候遇到了一个令人诧异的问题,就是平台上跑来的结果和我本机跑起来的结果不一样. 后来Debug了之后才发现是我数组开小了,只开到100 的数组竟然都去访问他170位的地址肯定要跪成翔啊.. ...
- USACO 2.2 Party Lamps 派对灯 (lamps)
题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码.这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭 ...
- 【USACO 2.2】Party Lamps
四种开关,n盏灯,1:改变所有灯状态,2:改变奇数灯状态,3:改变偶数灯状态,4:改变3k+1灯状态 给你按开关的总次数c和部分灯限制条件(开或关),一开始都是开着的.($c \leq 10000,n ...
- USACO Section 2.2: Party Lamps
这题有个小技巧, 按一个键两次等于没按,所以如果depsum > 16的话其实不用做深搜到depsum次,而只要16次就可以了. /* ID: yingzho1 LANG: C++ TASK: ...
- USACO lamps
IOI 98称号.然后,它似乎没有很困难.即使我能做到这一点微弱的残留物.所有的button按两次不按,高达因此实际上总的等效按4二级,首先C往下<=4,则搜索将能直接照射,总共只有16状态(事 ...
- USACO Section2.2 Party Lamps 解题报告 【icedream61】
lamps解题报告------------------------------------------------------------------------------------------- ...
- POJ 1176 Party Lamps&& USACO 2.2 派对灯(搜索)
题目地址 http://poj.org/problem?id=1176 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都 ...
- Luogu USACO Training 刷水记录
开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...
- luoguP1468 派对灯 Party Lamps x
P1468 派对灯 Party Lamps 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当 ...
随机推荐
- Java 语言中一个字符占几个字节?
Java中理论说是一个字符(汉字 字母)占用两个字节. 但是在UTF-8的时候 new String("字").getBytes().length 返回的是3 表示3个字节 作者: ...
- 二、pandas入门
import numpy as np import pandas as pd Series: #创建Series方法1 s1=pd.Series([1,2,3,4]) s1 # 0 1 # 1 2 # ...
- Hibernate映射文件配置(hbm.xml和注解方式)
一:通过*.hbm.xml配置实体的实现方式 mappingResources用于指定少量的hibernate配置文件像这样 Xml代码 <property name="mappin ...
- 在Phonegap下实现oAuth认证
原文:http://www.kuqin.com/mobile/20120719/322873.html 前段时间做过两次关于Phonegap的现场交流会议分享.基本上把Phonegap的一些特性和大家 ...
- 关于windows server 2003 IE 不能访问 https问题
https://xx.wosign.com/FAQ/Windows2003_server_sha256_support_problem.html 补丁地址: https://xx.wosign.com ...
- TCP/IP各种数据包结构体
下面这些TCP/IP数据包是我在进行Socket及Wipcap网络编程过程中曾经用到过的数据包结构体, 这些东西平时看起来不起眼,真正用到的时候就会觉得非常有用...... 以太帧头格式结构体,共14 ...
- ios 团购信息客户端demo(一)
团购信息客户端,主要整合了ASIHTTPREQUEST,KISSXML,AQGridView,MBProgressHUD这几个主要流行的IOS开发库,我们先来看一下效果图 首先我们新建一个IOS工程, ...
- 《零基础入门学习Python》【第一版】视频课后答案第005讲
测试题答案: 0.Python中: int:整型 bool:布尔类型 float:浮点型 str:字符串类型 1.为什么布尔类型(bool)的TRUE和FALSE分别用0和1表示? 计算机只认识二进制 ...
- Canal的安装与使用
一.Canal介绍 Canal的原理就是它自己伪装成slave, 向mysql发送dump协议,MySQL master接收到dump请求之后推送binlog文件给slave, 也就是canal. 二 ...
- (原)UICollectionView的基本使用
UICollectionView基本使用 学习iOS一段时间了,早听说了UICollectionView的强大一直没有机会使用,今天自己研究了一下. UICollectonView类似UITableV ...