四种开关,n盏灯,1:改变所有灯状态,2:改变奇数灯状态,3:改变偶数灯状态,4:改变3k+1灯状态

给你按开关的总次数c和部分灯限制条件(开或关),一开始都是开着的。($c \leq 10000,n \leq 100$)

我直接考虑每个开关按了奇数次或偶数次,因为顺序和总次数不影响结果,重要的是每种开关按的次数是奇数还是偶数次。

题解里有个flip[i]= (1<<6-1)&0x55 和与上0xAA,分别代表2、3开关,因为0x55就是01010101,0xAA就是10101010,每次异或上相应的flip[i],就是开关的操作。

/*
LANG:C++
TASK:lamps
*/
#include<cstdio>
#include<algorithm>
#include<string>
#define N 105
using namespace std;
int n,c,a,cnt;
bool on[N],off[N],sta[N];
string ans[];
bool ck(int id,int a,int b,int c,int d){
bool ans=1;
if(a&1)ans=!ans; if(id%2){
if(b&1)ans=!ans;
}else if(c&1)ans=!ans; if(id%3==1&&d&1)ans=!ans; return ans;
}
bool get(){
bool fd=0;
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
for(int l=0;l<=1;l++)
if(i^j^k^l^c==0&&i+j+k+l<=c){
//奇数次的开关为奇数个,则总次数为奇数,因此异或起来为0
//总次数不能超过c
// printf("%d %d %d %d\n",i,j,k,l);
bool ok=1;
for(int la=1;la<=n;la++)
if(ck(la,i,j,k,l)){
if(off[la]){
ok=0;break;
}
sta[la]=1;
}else {
if(on[la]){
ok=0;break;
}
sta[la]=0;
}
if(ok){
for(int i=0;i<n;i++)
ans[cnt]+=sta[i+1]+'';
ans[cnt++]+='\0';
fd=1;
}
}
return fd;
}
int main(){
freopen("lamps.in","r",stdin);
freopen("lamps.out","w",stdout);
scanf("%d%d",&n,&c);
while(scanf("%d",&a),a!=-1)
on[a]=1;
while(scanf("%d",&a),a!=-1)
off[a]=1;
if(get()){
sort(ans,ans+cnt);
for(int i=0;i<cnt;i++)
printf("%s\n",ans[i].c_str());
}else puts("IMPOSSIBLE");
return 0;
}

  

【USACO 2.2】Party Lamps的更多相关文章

  1. 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T4 过路费

    [Usaco 2009 Gold]JZOJ2020年9月19日提高B组T4 过路费 题目 Description 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生财之 ...

  2. 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T3 头晕的奶牛

    [Usaco 2009 Gold]JZOJ2020年9月19日提高B组T3 头晕的奶牛 题目 Description 奶牛们发现,在农场里面赛跑是很有趣的一件事.可是她们一旦在农场里面不断地转圈,就会 ...

  3. 【Usaco 2009 Gold 】JZOJ2020年9月19日提高B组T2 电视游戏问题

    [Usaco 2009 Gold ]JZOJ2020年9月19日提高B组T2 电视游戏问题 题目 Description 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶叫兽的做法拿她们去电击戒瘾的,可 ...

  4. 【Usaco 2009 Silver】JZOJ2020年9月19日提高B组T1 音乐节拍

    [Usaco 2009 Silver]JZOJ2020年9月19日提高B组T1 音乐节拍 题目 Description FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000) ...

  5. 【USACO 2012 Open】Running Laps(树状数组)

    53 奶牛赛跑 约翰有 N 头奶牛,他为这些奶牛准备了一个周长为 C 的环形跑牛场.所有奶牛从起点同时起跑,奶牛在比赛中总是以匀速前进的,第 i 头牛的速度为 Vi.只要有一头奶牛跑完 L 圈之后,比 ...

  6. 【BZOJ】【1986】【USACO 2004 Dec】/【POJ】【2373】划区灌溉

    DP/单调队列优化 首先不考虑奶牛的喜欢区间,dp方程当然是比较显然的:$ f[i]=min(f[k])+1,i-2*b \leq k \leq i-2*a $  当然这里的$i$和$k$都是偶数啦~ ...

  7. 【USACO 3.1】Stamps (完全背包)

    题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...

  8. 【USACO 3.1】Contact(01子串按出现次数排序)

    题意:给你一个01字符串,将长度为a到b之间(包含a.b)的子串按照出现次数排序.注意输入输出格式 题解:01子串对应一个二进制,为了区别11和011这样的不同子串,我们把长度也记录下来,官方题解是在 ...

  9. 【USACO 3.1】Score Inflation(完全背包)

    完全背包. http://train.usaco.org/usacoprob2?a=3Srffjlf4QI&S=inflate /* TASK:inflate LANG:C++ URL: */ ...

随机推荐

  1. 第六课——UIDynamicAnimator

    今天我们要学习UIDynamicAnimator 仿真物理学 . UIKit 力学(Dynamics) 和动态效果(Motion Effects) . 创建力学基本流程: 创建运动管理 创建运动行为( ...

  2. Json 基于jQuery+JSON的省市联动效果

    helloweba.com 作者:月光光 时间:2012-09-12 21:57 标签: jQuery  JSON  Ajax  省市联动     省市区联动下拉效果在WEB中应用非常广泛,尤其在一些 ...

  3. Flex String转Date

    在Flex中日期字符串转为Date类型,可以使用静态方法DateFormatter.parseDateString(str:String):Date方法. 该方法支持的字符串格式包括: YYYY-MM ...

  4. win7下给右键菜单添加启动cmd命令

    win7下给右键菜单添加启动cmd命令 (2013-07-20 19:20:56) 转载▼ 标签: it 右键 cmd 分类: 小软件操作技巧     最近编辑器在用windows下的gvim,但进入 ...

  5. ICSharpCode.SharpZipLib

    ICSharpCode.SharpZipLib 压缩.解压文件 附源码   http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZipli ...

  6. 似魔鬼的 『 document.write 』

    在平时的工作中,楼主很少用 document.write 方法,一直觉得 document.write 是个危险的方法.楼主不用,并不代表别人不用,最近给维护的项目添了一点代码,更加深了我对 &quo ...

  7. 发布新博客皮肤red_autumnal_leaves

    感谢sevennight为大家精心设计了一款博客皮肤——red_autumnal_leaves! [名称] red_autumnal_leaves[标题] 红叶[设计者] sevennight[简介] ...

  8. APP架子迁移指南(二)

    接上一篇,这一篇开始用android来解释MVP概念.八股式的架子结构和命名规范.我在准备这篇文章的时候还看到不少在MVP基础上衍生的架子思路,底子是MVP没错,但命名有区别.复杂度变了.架子也用到了 ...

  9. ASP.NET 系列:单元测试之Log4Net

    使用Log组件时,我们通常自定义ILogger接口,使用Log4Net等组件进行适配来定义不同的实现类.使用Log4Net日志组件时,为了即方便单元测试又能使用配置文件,我们通过Log4Net的ILo ...

  10. 微软分布式云计算框架Orleans(1):Hello World

    自从写了RabbitHub框架系列后的一段时间内一直在思索更加轻量简便,分布式高并发的框架(RabbitHub学习成本较高),无意间在网上级联看到了很多新框架:从helios到Akka.NET在到Or ...