【搜索】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:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭,本来是 ...
随机推荐
- JS实现系统时间(自动)
转自:https://blog.csdn.net/qq_35607510/article/details/54600563
- Android进阶2之Activity之间数据交流(onActivityResult的用法) (转载)
转自:http://blog.csdn.net/sjf0115/article/details/7387467 主要功能: 在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activ ...
- Springboot 配置 application.yml 连接MySQL数据库
1.在pom.xml的<dependencies></dependencies>标签中中加入以下依赖 <dependency> <groupId>org ...
- JAVA多线程(一) Thread & Runnable
githut代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service/ ...
- hdu1151 Air Raid 基础匈牙利
#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> ...
- iOS WKWebView 加载进度条、导航栏返回&关闭 (Swift 4)
导航: 1.加载进度条 2.导航栏增加返回.关闭按钮 加载进度条 效果图 代码如下: self.progressView.trackTintColor = UIColor.white self.pro ...
- 题解报告:hihoCoder #1050 : 树中的最长路
描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已. 但 ...
- VMware Workstation虚拟磁盘文件备份或移植
一.备份快照 1> 1.点击虚拟机上面的快速备份按钮 2.填写快照名字和备注 快照就生成了. 2>恢复 1.点击恢复按钮,此按钮的功能是直接恢复到上一次备份的节点. 2.或者选后面一个按钮 ...
- web 前端的一些问题
1. HTML 和 JS 一个网页显示出来的静态的内容为html创见的静态object 对这些object的操作通过JS来响应 2. HTTP cookie cookie是由server set, 由 ...
- 137 Single Number II 数组中除了一个数外,其他的数都出现了三次,找出这个只出现一次的数
给定一个整型数组,除了一个元素只出现一次外,其余每个元素都出现了三次.求出那个只出现一次的数.注意:你的算法应该具有线性的时间复杂度.你能否不使用额外的内存来实现?详见:https://leetcod ...