【搜索】P1468 派对灯 Party Lamps
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的更多相关文章
- P1468 派对灯 Party Lamps(BIG 模拟)
题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...
- luogu P1468 派对灯 Party Lamps
题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...
- luoguP1468 派对灯 Party Lamps x
P1468 派对灯 Party Lamps 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当 ...
- 【BFS/DFS/YY】派对灯
[luogu1468]派对灯 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将 ...
- POJ 1176 Party Lamps&& USACO 2.2 派对灯(搜索)
题目地址 http://poj.org/problem?id=1176 题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都 ...
- USACO 2.2 Party Lamps 派对灯 (lamps)
题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码.这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭 ...
- 【USACO 2.2.4】派对灯
[描述] 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...
- usaco 2.2.4 生日派对灯(最近写题碰到的,虽然知道现在写这个有点晚了)
经过分析,他看似很多的开灯的方法其实合并起来就只有八个. 首先,一个开关在执行的时候只能按一次(因为你就算按了两次就相当于一次也没有按). 当一个都不按的时候 当然就只有一种:不按. 当按一下的时候 ...
- jzoj P1163 生日派对灯
在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码.这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭,本来是 ...
随机推荐
- 数据连接池使用方法 JADI
1.编写context.xml 文件复制到 WebRoot/META_INF/context.xml <?xml version='1.0' encoding='utf-8'?> < ...
- C - Soldier and Cards
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description Two bo ...
- class.forName()和.class有什么区别?
class.forName()会初始化类的成员(静态的),最先加载的是类的静态成员变量,然后是静态代码块. 访问常量并不会导致类的初始化,但是访问静态成员会.
- Ubuntu中字体的改变
1.sudo dpkg-reconfigure console-setup 2.弹出 Configuring console-setup 界面,选择适当的编码格式,我们一般选择默认的UTF-8,选择O ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时4
课时4 数据驱动的图像分类:K最邻与线性分类器(上) 图像分类之前,我们需要将图片转换成一张巨大的数字表单,然后从所有种类中,给这个表单选定一个标签. 为什么分类问题是个困难的问题:图像分类难点是,当 ...
- sql server2008配置管理工具服务显示远程过程调用失败
SQL SERVER2008配置管理工具服务显示远程过程调用失败 前两天,装了VS2012后,打开SQL2008配置管理工具,发现SQL服务名称里什么也没有,只有一个提示:(如图) 上网搜了,试了 ...
- Bid和Ask
一直很懵到底哪个是哪个,记吧,很快就又懵了.网上又坑,每一个解释清楚的.这次搞明白了记下来. 当然,这么逗比的取名法我也是醉了.直接加点东西,UserBuy,UserSell,BankBuy,Bank ...
- oatu2.0认证原理(转)
今天有时间总结一下: 一.OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 在详细讲解OAuth 2.0之前,需要了解几个专用名词,理 ...
- php 获得上周数据
$lastMondy = date('Y-m-d', strtotime('-2 sunday +1 days', time()));$lastSundy = date('Y-m-d', strtot ...
- new delete 创建回收细节