开关灯

jzoj 3926

题目大意

有一个n×l的灯网,你可以把按某一列的灯的按钮,然后这一列开的关,关的开,你也可以把某一行的灯和别的行的灯调换,问从当前状态到目标状态最少按多少个按钮

输入样例

3
3 2
01 11 10
11 00 10
2 3
101 111
010 001
2 2
01 10
10 01

输出样例

1
Impossible
0

样例解释

第一组测试数据,按第2列开关,得到00, 10, 11,然后依次交换后两行和前两行即可。
第二组测试数据,可以证明不可能达到要求的方案。
第三组测试数据,只需交换两行即可。

数据范围

40% 的数据:1⩽N,L⩽10.1 \leqslant N, L \leqslant 10.1⩽N,L⩽10.
100% 的数据:1⩽N⩽150,1⩽L⩽50,1⩽T⩽4.1 \leqslant N \leqslant 150,1 \leqslant L \leqslant 50,1 \leqslant T \leqslant 4.1⩽N⩽150,1⩽L⩽50,1⩽T⩽4.

解题思路

我们枚举当前状态的第一行和目标状态的第几行配对,然后我们可以用异或求出某一行是否按,然后我们看看剩下的行是否能找到可配对的行,如果都有
那这就是一组解,然后求最小值即可

代码

#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll t, n, l, ans, g, pp, p[200], a[200], b[200];
string str;
ll js(ll x)//看有多少个1
{ll sum = 0;while(x) sum += x&1, x>>=1;return sum;
}
int main()
{scanf("%lld", &t);while(t--){memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));scanf("%lld %lld", &n, &l);for (ll i = 1; i <= n; ++i){cin>>str;for (ll j = 1, g = 1; j <= l; ++j, g <<= 1)a[i] += (str[j - 1] - 48) * g;//转换为数字}for (ll i = 1; i <= n; ++i){cin>>str;for (ll j = 1, g = 1; j <= l; ++j, g <<= 1)b[i] += (str[j - 1] - 48) * g;}ans = 51;for (ll i = 1; i <= n; ++i){memset(p, 0, sizeof(p));g = a[1]^b[i];//那些要按p[i] = 1;//是否用过pp = 1;//是否找到配对的for (ll j = 2; j <= n; ++j){pp = 0;for (ll k = 1; k <= n && !pp; ++k)if (!p[k] && (a[j]^b[k]) == g)//未用过且可以配对p[k] = 1, pp = 1;if (!pp) break;}if (pp) ans = min(js(g), ans);//求最小值}if (ans == 51) printf("Impossible\n");else printf("%lld\n", ans);}return 0;
}

开关灯(jzoj 3926)相关推荐

  1. 视频 网站 页面开关灯实现方法

    在甲骨文学习 已经进行了四分之一了,  关于web 的学习基本结束了, 在项目展示的时候遇到了 视频网站开关灯的问题, 其实问题的根本就是 做两个div,  然后开灯的时候隐藏一个 关灯的时候 隐藏另 ...

  2. JZOJ 5461 购物 —— 贪心

    题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...

  3. jquery实现开关灯

    开关灯.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  4. HDU 3926 图的同构

    Hand in Hand 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3926 Problem Description In order to get ...

  5. Airbnb欺诈预测机器学习模型设计:准确率和召回率的故事 发表于2015-07-15 16:14| 3926次阅读| 来源AirBNB/Data| 1 条评论| 作者Ariana Radianto

    Airbnb欺诈预测机器学习模型设计:准确率和召回率的故事 发表于2015-07-15 16:14| 3926次阅读| 来源AirBNB/Data| 1 条评论| 作者Ariana Radianto ...

  6. 线段树--codevs 1690 开关灯

    codevs 1690 开关灯 USACO  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description YYX家门前的街上有N(2& ...

  7. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  8. [jzoj NOIP2018模拟 11.01]

    很庆幸打了这场模拟赛,因为这一场爆零 好像上次纪中的某场比赛我也出现了同样的问题,光是计算时间复杂度而忘记了空间的限制.想必是比上次惨的,考场上就写了两题而这两题都因为MLE爆零了.而且我T2还码了7 ...

  9. 元素的样式设置 元素类样式的操作 开关灯效果 获取兄弟元素 当前元素的兄弟元素样式

    元素的样式设置 <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...

最新文章

  1. git init 会不会清空_Git命令:git pull amp; git fetch
  2. 什么样的模型是好的模型 好的数据胜于好的特征,好的特征胜于好的算法
  3. redis企业级应用(下)-如何维护redis的key
  4. 2011阿里巴巴集团实习生招聘笔试题 CC++
  5. Android 急速发布项目到 JitPack
  6. 翻新版三星Note7发售消息曝光:原价7折,6月发售
  7. [react] 装饰器(Decorator)在React中有什么应用?
  8. 计算机文档用什么翻译,Word文档翻译在哪里(适于Word2010-Word2016)?
  9. php mysql数据库同步_实现MySQL数据库同步实例演示_MySQL
  10. usr / bin / ld:找不到-l <nameOfTheLibrary>
  11. android 著名播放器,十二大最著名的Android播放器开源项目
  12. 轻量级音乐服务器LMS
  13. Linux 服务器安全加固方案
  14. 英语语法学习特点总结
  15. VMware Workstation虚拟机无法获取IP地址的解决办法
  16. LearnGL - 05 - Texture
  17. JPEG算法解密 JPEG原理详解 (转载 by jinchao)
  18. java推算日期后天_分别用C++和Java写的计算后天的日期code
  19. 四阶龙格库塔法的基本思想_利用龙格库塔法求解郎之万方程.doc
  20. 全网页CSS 超链接无下划线

热门文章

  1. expsky.php,Typecho漏洞利用工具首发,半分钟完成渗透
  2. springboot2 多线程写入数据_解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题...
  3. 算法设计与分析——动态规划——最大字段和问题
  4. Numpy中数组创建函数的辨析
  5. 二分查找基础概念与经典题目(Leetcode题解-Python语言)二分索引型
  6. [JavaWeb-HTML]HTML标签_表格标签
  7. Abstract Factory(抽象工厂)--对象创建模式
  8. Deque(双向队列 c++模版实现 算法导论第三版第十章10.1-5题)
  9. 求旋转数组的最小数字C++
  10. D. Salary Changing(二分,前缀和,贪心,瞎搞)