P1468 派对灯 Party Lamps

我们来分析一下对灯的操作

1.对所有灯的,这时吧所有灯看成一个整体

2.奇偶数的操作,这时可以把每两个数看成一个循环节

3.对3X+ 1的操作,这时可以把每三个数看成一个循环节

显而易见的,我们把序列看成6个一组的循环节,便能模拟整个序列。

用笔画一下,我们发现将这个含六个元素的序列进行变换最终只会有八种结果,那么我们只需要判断一下最后这八种结果

最后是否符合题意要求就行了(至于他是怎么变换的我们不用管)

以上就是在题解区找到的解释,其实说得很好,希望原作者 fastle 见谅。

 #include<bits/stdc++.h>
using namespace std;
const int N = 1e3+;
int One[N],Zero[N],cnt1,cnt2;
int n,C;
int a[N][];
string S[];
char s[N];
void Init(){
for(int i=;i<N;i++){
for(int j=;j<=;j++){
a[i][j] = ;
}
}
}
inline bool check( int No ){
int cnt = ;
for(int i=;i<;i++){
if( (No & (<<i)) == (<<i) )
cnt++;
}
bool F = (cnt<=C) ;
for(int i=;i<cnt1;i++){
if( a[One[i]][No] != ) F = false;
}
for(int i=;i<cnt2;i++){
if( a[Zero[i]][No] != ) F = false;
}
return F;
}
int main()
{
ios_base :: sync_with_stdio();
cin.tie(NULL) , cout.tie(NULL);
Init();
cin>>n>>C;
while( cin>>One[cnt1++] ){
if(One[cnt1-]==-){
cnt1--; break;
}
}
while( cin>>Zero[cnt2++] ){
if(Zero[cnt2-]==-){
cnt2--; break;
}
}
/*
for(int i=0;i<cnt1;i++){
printf("%d%c",One[i],i==cnt1-1?'\n':' ');
}
for(int i=0;i<cnt2;i++){
printf("%d%c",Zero[i],i==cnt2-1?'\n':' ');
}
*/
for(int i=;i<=;i++){
if( i & ){
for(int j=;j<=n;j++){
a[j][i] = a[j][i] ^ ;
}
}
if( (i>>) & ){
for(int j=;j<=n;j+=){
a[j][i] = a[j][i] ^ ;
}
}
if( (i>>) & ){
for(int j=;j<=n;j+=){
a[j][i] = a[j][i] ^ ;
}
}
if( (i>>) & ){
for(int j=;j<=n;j+=){
a[j][i] = a[j][i] ^ ;
}
}
}
int cnt = ; for(int j=;j<=;j++){
if( check(j) ) {
for(int i = ; i <= n; i++){
s[i-] = a[i][j] + '';
}
s[n] = '\0';
S[cnt++] = s;
}
}
if( cnt == ){
cout<<"IMPOSSIBLE"<<endl;
}else{
sort(S,S+cnt);
cnt = unique(S,S+cnt)-S;
for(int i = ; i < cnt ; i++ ){
cout<<S[i]<<endl;
}
}
return ;
}

【搜索】P1468 派对灯 Party Lamps的更多相关文章

  1. P1468 派对灯 Party Lamps(BIG 模拟)

    题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...

  2. luogu P1468 派对灯 Party Lamps

    题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...

  3. luoguP1468 派对灯 Party Lamps x

    P1468 派对灯 Party Lamps 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当 ...

  4. 【BFS/DFS/YY】派对灯

    [luogu1468]派对灯 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将 ...

  5. POJ 1176 Party Lamps&& USACO 2.2 派对灯(搜索)

    题目地址 http://poj.org/problem?id=1176 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都 ...

  6. USACO 2.2 Party Lamps 派对灯 (lamps)

    题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码.这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭 ...

  7. 【USACO 2.2.4】派对灯

    [描述] 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...

  8. usaco 2.2.4 生日派对灯(最近写题碰到的,虽然知道现在写这个有点晚了)

    经过分析,他看似很多的开灯的方法其实合并起来就只有八个. 首先,一个开关在执行的时候只能按一次(因为你就算按了两次就相当于一次也没有按). 当一个都不按的时候  当然就只有一种:不按. 当按一下的时候 ...

  9. jzoj P1163 生日派对灯

    在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码.这些灯都连接到四个按钮:  按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭,本来是 ...

随机推荐

  1. 数据连接池使用方法 JADI

    1.编写context.xml 文件复制到 WebRoot/META_INF/context.xml <?xml version='1.0' encoding='utf-8'?> < ...

  2. C - Soldier and Cards

    Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Description Two bo ...

  3. class.forName()和.class有什么区别?

    class.forName()会初始化类的成员(静态的),最先加载的是类的静态成员变量,然后是静态代码块. 访问常量并不会导致类的初始化,但是访问静态成员会.

  4. Ubuntu中字体的改变

    1.sudo dpkg-reconfigure console-setup 2.弹出 Configuring console-setup 界面,选择适当的编码格式,我们一般选择默认的UTF-8,选择O ...

  5. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时4

    课时4 数据驱动的图像分类:K最邻与线性分类器(上) 图像分类之前,我们需要将图片转换成一张巨大的数字表单,然后从所有种类中,给这个表单选定一个标签. 为什么分类问题是个困难的问题:图像分类难点是,当 ...

  6. sql server2008配置管理工具服务显示远程过程调用失败

    SQL SERVER2008配置管理工具服务显示远程过程调用失败   前两天,装了VS2012后,打开SQL2008配置管理工具,发现SQL服务名称里什么也没有,只有一个提示:(如图) 上网搜了,试了 ...

  7. Bid和Ask

    一直很懵到底哪个是哪个,记吧,很快就又懵了.网上又坑,每一个解释清楚的.这次搞明白了记下来. 当然,这么逗比的取名法我也是醉了.直接加点东西,UserBuy,UserSell,BankBuy,Bank ...

  8. oatu2.0认证原理(转)

    今天有时间总结一下: 一.OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 在详细讲解OAuth 2.0之前,需要了解几个专用名词,理 ...

  9. php 获得上周数据

    $lastMondy = date('Y-m-d', strtotime('-2 sunday +1 days', time()));$lastSundy = date('Y-m-d', strtot ...

  10. new delete 创建回收细节