Unknown Switches 模拟

                        Unknown Switches

题目抽象:每个开关可能控制多个灯,每个灯只能被一个开关控制,给出Q的操作的开关变化,和灯的变化情况。求每个灯被那个开关控制。

分析:用flag[MS]表示开关i的开关情况,link[MS][40]表示灯i和开关j的控制关系。

模拟,对于每个操作的开关i和灯j,如果他们状态相同,那么他们可能存在控制关系,如果状态不同,那么一定不存在控制关系。

最后统计每个灯被多少个开关控制,如果是1,那么可以确定被哪个开关控制,否则,信息不足,不能确定控制关系,输入‘?’。

  1 /********************************
  2 please don‘t hack me!! /(ToT)/~~
  3                 __------__
  4               /~          ~  5              |    //^\\//^\|
  6            /~~\  ||  T| |T|:~  7           | |6   ||___|_|_||:|
  8            \__.  /      o  \/‘
  9             |   (       O   )
 10    /~~~~\    `\  \         /
 11   | |~~\ |     )  ~------~` 12  /‘ |  | |   /     ____ /~~~) 13 (_/‘   | | |     /‘    |    ( |
 14        | | |     \    /   __)/  15        \  \ \      \/    /‘ \   ` 16          \  \|\        /   | |\___|
 17            \ |  \____/     | |
 18            /^~>  \        _/ <
 19           |  |         \        20           |  | \        \         21           -^-\  \       |        )
 22                `\_______/^\______/
 23 ************************************/
 24
 25 #include <iostream>
 26 #include <cstdio>
 27 #include <cstring>
 28 #include <cmath>
 29 #include <algorithm>
 30 #include <string>
 31 #include <vector>
 32 #include <set>
 33 #include <map>
 34 #include <queue>
 35 #include <stack>
 36 #include <cstdlib>
 37 #include <sstream>
 38 using namespace std;
 39 typedef long long LL;
 40 const LL INF = 0x5fffffff;
 41 const double EXP = 0x5fffffff;
 42 const LL MOD = (LL)1E9+7;
 43 const int MS = 1005;
 44
 45 int link[MS][40];       //灯i与开关j是否存在控制关系。1表示存在,2表示一定不存在
 46 bool flag[MS];          //  灯i的状态。
 47 char S[MS];
 48 char B[MS];
 49 int n,m,q;
 50
 51 int main() {
 52     while(scanf("%d%d%d",&n,&m,&q) == 3 && (n + m + q)) {
 53         memset(link,0,sizeof(link));
 54         memset(flag,0,sizeof(flag));
 55         if (!q) {
 56             if (n == 1) {
 57                 for (int i = 0; i < m;i++)
 58                     printf("0");
 59                 printf("\n");
 60             }
 61             else {
 62                 for (int i = 0; i < m; i++) {
 63                     printf("?");
 64                 }
 65                 printf("\n");
 66             }
 67             continue;
 68         }
 69         while (q--) {
 70             scanf("%s%s",S,B);
 71             for (int i = 0; i < n; i++) {
 72                 if (S[i] == ‘1‘){
 73                     if (flag[i])
 74                         flag[i] = 0;
 75                     else
 76                         flag[i] = 1;
 77                 }
 78             }
 79             for (int i = 0; i < n; i++){
 80                 for (int j = 0;j < m;j++) {
 81                     if (flag[i] && B[j] == ‘1‘ && link[j][i] != 2)
 82                         link[j][i] = 1;
 83                     else if(flag[i] == 0 && B[j] == ‘0‘ && link[j][i] != 2)
 84                         link[j][i] = 1;
 85                     else
 86                         link[j][i] = 2; // 一定不存在控制关系。
 87                 }
 88             }
 89         }
 90         for (int i = 0; i < m; i++) {
 91             int cnt = 0;
 92             int index = 0;
 93             for (int j = 0; j < n; j++) {
 94                 if(link[i][j] == 1) {
 95                     cnt++;
 96                     index = j;
 97                 }
 98             }
 99             if(cnt == 1) {
100                 if (index < 10)
101                     printf("%d",index);
102                 else
103                     printf("%c",index - 10 + ‘A‘);
104             }
105             else
106                 printf("?");
107         }
108         printf("\n");
109     }
110     return 0;
111 }
时间: 2024-08-11 17:27:43

Unknown Switches 模拟的相关文章

(寒假GYM开黑)2018-2019 ACM-ICPC Brazil Subregional Programming Contest

layout: post title: 2018-2019 ACM-ICPC Brazil Subregional Programming Contest author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces 传送门 付队! 许老师! B.Marbles (nim博弈) 题意 一个棋盘n个点,每次可以把一个棋子移动到(x-d,y) or (x,y-d) or (x-d,y-d) 把其中一个棋子移动到(0

HDU 5446 Unknown Treasure(lucas + 中国剩余定理 + 模拟乘法)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5446 题目大意:求C(n, m) % M, 其中M为不同素数的乘积,即M=p1*p2*...*pk, 1≤k≤10.1≤m≤n≤10^18. 分析: 如果M是素数,则可以直接用lucas定理来做,但是M不是素数,而是素数的连乘积.令C(n, m)为 X ,则可以利用lucas定理分别计算出 X%p1,X%p2, ... , X % pk的值,然后用中国剩余定理来组合得到所求结果. 比较坑的地方是,

Java模拟按键

JDK自带了Robot类,此类用于为测试自动化.自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件.Robot 的主要目的是便于 Java 平台实现自动测试. 详情可查看jdk1.6中文手册Robot类 例子:打开win7的任务管理器,快捷键是ctrl+shift+esc import java.io.*; import java.awt.*; import java.util.*; import java.awt.event.*; /** *@author:HaxtraZ *

Android - SimpleAdapter适配器支持的组件及Listview模拟下载

本来这周想写三篇的,结果这第一篇就不知道该如何起笔.语言表达能力真的需要提高啊.其实有好多想写的,最近这几天又接触到了以前听过但是没有去考虑的一些点.这篇的起因曾经做过一道题,我当时很不理解,我看有评论还是很多跟我当时想法一样的,一直没来得及去追究,终于还是放心不下,去看了一下,发现我错了.原题如下: 使用SimpleAdapter作为 ListView的适配器,行布局中支持下列哪些组件? TextView ProgressBar CompoundButton ImageView 当时我毫不犹豫

UVA - 12108 Extraordinarily Tired Students(模拟)

Extraordinarily Tired Students Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description When a student is too tired, he can't help sleeping in class, even if his favorite teacher is right here in front of hi

全网服务器数据备份方案(模拟生产环境)+邮件告知

使用rsync实现全网数据备份(模拟生产环境)+邮件告知 项目要求来源于网络:http://oldboy.blog.51cto.com/2561410/1856048 假定3台服务器主机名分别为web01.backup.nfs01,主机信息如下表: 服务器说明 内网IP 主机名 nginx web服务器 192.168.1.222 WEB-01 NFS存储服务器 192.168.1.233 NFS-01 rsync备份服务器 192.168.1.244 BACKUP 要求:每天晚上00点整在We

Python:模拟linux命令cat

模拟linux的cat命令,打印从命令行输入的文件名 #!/usr/bin/python #Filename:cat.py helpString = '''This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help'''

利用PHP的register_shutdown_function来记录PHP的输出日志,模拟析构函数

最近在做的一个项目,由于全是通过远程HTTP请求来调用PHP的接口程序. 接收到的参数和返回的内容对开发人员来说都是未知不可见的. 虽然可以通过直接在脚本中模拟请求,但由于实际环境复杂的多,调试极其不方便. 于是想是否可以写一个函数用来记录对PHP接口调用的情况. 想到以前看到过的一个PHP函数 register_shutdown_function(). 该函数的作用是注册一个函数,当PHP脚本执行完成,或者代码中调用了 exit , die 这样的代码之后,执行预先注册好的函数. 这样我们就可

RFID 克隆/仿真/模拟/监控/拦截/检测/嗅探器

Demo: Cloning a Verichip Yourself Download I have: schematics as PDF BOM, with Digikey part numbers board artwork (Gerbers and drill file) PIC source code (assembly for MPASM / IHEX binary) Theory of Operation Please refer to the schematic. It's impo