题目描述

在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码。 这些灯都连接到四个按钮:

按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭,本来是关着的灯被点亮。

按钮2:当按下此按钮,将改变所有奇数号的灯。

按钮3:当按下此按钮,将改变所有偶数号的灯。

按钮4:当按下此按钮,将改变所有序号是3*K+1(K>=0)的灯。例如:1,4,7…

一个计数器C记录按钮被按下的次数。当宴会开始,所有的灯都亮着,此时计数器C为0。

你将得到计数器C(0<=C<=10000)上的数值和经过若干操作后某些灯的状态。写一个程序去找出所有灯最后可能的与所给出信息相符的状态,并且没有重复。

输入输出格式

输入格式:

不会有灯会在输入中出现两次。

第一行: N。

第二行: C最后显示的数值。

第三行: 最后亮着的灯,用一个空格分开,以-1为结束。

第四行: 最后关着的灯,用一个空格分开,以-1为结束。

输出格式:

每一行是所有灯可能的最后状态(没有重复)。每一行有N个字符,第1个字符表示1号灯,最后一个字符表示N号灯。0表示关闭,1表示亮着。这些行必须从小到大排列(看作是二进制数)。

如果没有可能的状态,则输出一行’IMPOSSIBLE’。

输入输出样例

输入样例#1:

10

1

-1

7 -1

输出样例#1:

0000000000

0101010101

0110110110

说明

在这个样例中,有三种可能的状态:

所有灯都关着

1,4,7,10号灯关着,2,3,5,6,8,9亮着。

1,3,5,7,9号灯关着,2, 4, 6, 8, 10亮着。

翻译来自NOCOW

USACO 2.2

这个题读题真的很难,有点恶心,看了一晚上,包括翻题解,才明白样例是什么!尴尬有点小蔡。

这个代码,不是我原创,我写了将近两倍长的,我觉得他写的很好,很短就拿来学一下,还有搜索过不了!!!!!

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5. const int h[9][7]= {{},
  6. {0,0,0,0,0,0}, //1
  7. {0,0,0,1,1,1}, //34
  8. {1,0,1,0,1,0}, //2
  9. {1,0,1,1,0,1}, //4
  10. {0,1,0,0,1,0}, //14
  11. {0,1,0,1,0,1}, //3
  12. {1,1,1,0,0,0}, //24
  13. {1,1,1,1,1,1} //0
  14. };
  15. int n,c,on[101],off[101];
  16. inline void work(int w[9])
  17. {
  18. int flag=1;
  19. for(int k=1; k<=w[0]; k++)
  20. {
  21. int tag=0;
  22. for(int i=1; i<=on[0]; i++)
  23. if(!h[w[k]][on[i]%6])
  24. {tag=1;break;}
  25. if(tag) continue;
  26. for(int i=1; i<=off[0]; i++)
  27. if(h[w[k]][off[i]%6])
  28. {tag=1;break;}
  29. if(tag) continue;
  30. flag=0;
  31. for(int i=1; i<=n; i++)
  32. printf("%d",h[w[k]][i%6]);
  33. printf("\n");
  34. }
  35. if(flag) printf("IMPOSSIBLE");
  36. exit(0);
  37. }
  38. int main()
  39. {
  40. int tmp;
  41. scanf("%d%d",&n,&c);
  42. while(1)
  43. {
  44. scanf("%d",&tmp);
  45. if(tmp==-1) break;
  46. on[++on[0]]=tmp;
  47. }
  48. while(1)
  49. {
  50. scanf("%d",&tmp);
  51. if(tmp==-1) break;
  52. off[++off[0]]=tmp;
  53. }
  54. if(c==0)
  55. {int w[9]={1,8};work(w);}
  56. if(c==1)
  57. {int w[9]= {4,1,3,4,6};work(w);}
  58. if(c==2)
  59. {int w[9]= {7,1,2,3,5,6,7,8};work(w);}
  60. if(c>2)
  61. {int w[9]= {8,1,2,3,4,5,6,7,8};work(w);}
  62. return 0;
  63. }

P1468 派对灯 Party Lamps(BIG 模拟)的更多相关文章

  1. 【搜索】P1468 派对灯 Party Lamps

    P1468 派对灯 Party Lamps 我们来分析一下对灯的操作 1.对所有灯的,这时吧所有灯看成一个整体 2.奇偶数的操作,这时可以把每两个数看成一个循环节 3.对3X+ 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. USACO 2.2 Party Lamps 派对灯 (lamps)

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

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

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

  7. 【USACO 2.2.4】派对灯

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

  8. 用LED灯和按键来模拟工业自动化设备的运动控制

    开场白: 前面三节讲了独立按键控制跑马灯的各种状态,这一节我们要做一个机械手控制程序,这个机械手可以左右移动,最左边有一个开关感应器,最右边也有一个开关感应器.它也可以上下移动,最下面有一个开关感应器 ...

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

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

随机推荐

  1. MySQL入门,第八部分,多表查询(二)

    嵌套查询 嵌套查询是指一个SELECT-FROM-WHERE查询块嵌入在另一个SELECT-FROM-WHERE查询块的WHERE子句中的查询 注意: 只有当连接查询投影列的属性来自于一个关系表时才能 ...

  2. [ddt02篇]十年测试老鸟帮您解析:ddt结合txt,excel,csv,mysql实现自动化测试数据驱动

    一.前言: 阅读此文之前请先阅读: [ddt01篇]十年测试老鸟帮您解析:ddt数据驱动入门基础应用:https://www.cnblogs.com/csmashang/p/12679448.html ...

  3. NullPointerException的处理新方式,Java14真的太香了

    在Java语言中,处理空指针往往是一件很头疼的事情,一不小心,说不定就搞出个线上Bug,让你的绩效考核拿到3.25.最近新出的Java14,相信大家都有所耳闻,那么今天就来看看,面对NullPoint ...

  4. MODIS系列之NDVI(MOD13Q1)三:.jdk文件配置+MRT安装

    MRT(MODIS Reprojection Tool)简介: MODIS的全称为中分辨率成像光谱仪(Moderate-Resolution Imaging Spectroradiometer),是搭 ...

  5. jvm入门及理解(四)——运行时数据区(堆+方法区)

    一.堆 定义: Heap,通过new关键字创建的对象,都存放在堆内存中. 特点 线程共享,堆中的对象都存在线程安全的问题 垃圾回收,垃圾回收机制重点区域. jvm内存的划分: JVM内存划分为堆内存和 ...

  6. std::string构造函数

    string(); string (const string& str); string (const string& str, size_t pos, size_t len = np ...

  7. 数据结构和算法(Golang实现)(26)查找算法-哈希表

    哈希表:散列查找 一.线性查找 我们要通过一个键key来查找相应的值value.有一种最简单的方式,就是将键值对存放在链表里,然后遍历链表来查找是否存在key,存在则更新键对应的值,不存在则将键值对链 ...

  8. Linux学习6-安装Python3.6

    前言 今天我们来学习一下如何在Linux环境下安装Python3.6吧! 一:下载Python3.6(我下载的是python3.6.8) 地址:https://www.python.org/downl ...

  9. Gatling脚本编写技巧篇(二)

    脚本示例: import io.gatling.core.Predef._ import io.gatling.http.Predef._ import scala.concurrent.durati ...

  10. 微信小程序标签常见知识点归纳整理

    1. <image src='/images/logo.png' mode='widthFix'></image> mode 属性表示图片随着指定的宽度自动拉伸以显示原图的正确 ...