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. In-App Purchase Programming Guide----(三) ----Retrieving Product Information

    Retrieving Product Information In the first part of the purchase process, your app retrieves informa ...

  2. Node.js之网游服务器实践

    此文已由作者尧飘海授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 随着Node.js的不断发展与壮大,应用范围也越来越广泛,从传统的企业应用,到互联网使用,再到云计算的发展, ...

  3. 如何用GO实现一个tail -f功能以及相应的思维发散

    此文已由作者杨望暑授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 背景 在服务端查看log会经常使用到tail -f命令实时跟踪文件变化. 那么问题来了, 如果自己写一个同样 ...

  4. 51nod 1119【杨辉三角】

    思路: = =杨辉三角的应用,组合数的应用: C(N+M,N); 逆元一发,费马小定理,OK. #include <stdio.h> #include <string.h> # ...

  5. 51单片机 HC05蓝牙模块

    一.注意事项 1.烧写程序时,要把蓝牙tx,rx信号线拔掉,对烧写程序有影响. 2.执行HC05集命令时,均以\r\n结尾.串口中断若选择“发送新行”时,不用添加\r\n.原理相同. 二.准备软硬件 ...

  6. bzoj 4259 4259: 残缺的字符串【FFT】

    和bzoj 4503 https://www.cnblogs.com/lokiii/p/10032311.html 差不多,就是再乘上一个原串字符 有点卡常,先在点值下算最后一起IDFT #inclu ...

  7. MAC下如何配置Android手机调试(将测试手机加入到Mac系统的调试列表中)

    第一步: 查看usb设备信息 在 终端输入:system_profiler SPUSBDataType     可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): 查看到我的Andr ...

  8. springboot整合H2内存数据库,实现单元测试与数据库无关性

    一.新建spring boot工程 新建工程的时候,需要加入JPA,H2依赖 二.工程结构   pom文件依赖如下: <?xml version="1.0" encoding ...

  9. 命令行运行Java程序时出现错误

    在命令行运行Java程序时出现下面错误 Error: Could not create the Java Virtual Machine. Error: A fatal exception has o ...

  10. Oracle数据库创建表空间及用户授权

    /*分为四步 */ /*第1步:创建临时表空间 */ create temporary tablespace test_temp tempfile 'E:\app\Administrator\orad ...