hdu4149 Magic Potion
Magic Potion
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 488 Accepted Submission(s): 287
Each of the next t lines contains 9 integers, respectively, x1 xor m, x2 xor m ,...., x8 xor m, (x1 + x2 +...+ x8) xor m, each of the 9 numbers is less or equal to 231-1.
1 2 3 4 5 6 7 8 36
5 5 5 5 5 5 5 5 123
11
The XOR operation takes two bit patterns of equal length and performs the logical XOR operation on each pair of corresponding bits.
The result of each digit is 1 if the two bits are different, and 0 if they are the same.
For example:
0101 (decimal 5)
XOR 0011 (decimal 3)
= 0110 (decimal 6)
//x << N: 左移N位就相当于原数乘以2的N次方; x >> N : 右移N位 就相当于原数除以2的N次方。
//x 异或 m,设 y = x << m, 即 y 就等于将x 左移(<<) m 位 ,这点很重要!
//设原来的数字为 xi 与 m 异或后 xi ^m = bi(1 <= i <= 9), (x1+x2+...+x8)^ m = b9 相当于(b1+b2+...+b8) = b9;
//因此 将(b1+b2+...+b8) 每一位与b9的每一位比较,若不相同, 即 意味着原数向左移了 j 位 ,将移动的位数相加即为 m的值
//很容易想到 若xi没有移位的话, (b1+b2+...+b8)^m == b9
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t;
int sum, m, tmp;
cin >> t;
while(t--)
{
int r[10];
for(int i = 1; i <= 9; i++)
{
cin >> r[i];
}
sum = m = 0;
for(int j = 0; j <= 31; j++)
{
tmp = 0;
for(int k = 1; k <= 8; k++)
{
tmp += r[k]>>j&1; //(r[k] / 2^j) & 1, 与m异或后的八个数的和 从右至左 取出它的值,与第九个数的第j位比较
}
if((sum + tmp)%2 != (r[9]>>j&1))//若不同,将其转换为原数的第i位具有的值, 再求出它的进位值 ,并将m加上 (1左移相应的位数 j )
{
tmp = 8 - tmp;
sum = (sum + tmp) / 2;
m += 1 << j;
}
else
{
sum = (sum + tmp) / 2;//若相同 将进位的用sum加上去,继续下一位
}
}
cout << m << endl;
}
return 0;
}
hdu4149 Magic Potion的更多相关文章
- Gym 101981I - Magic Potion - [最大流][2018-2019 ACM-ICPC Asia Nanjing Regional Contest Problem I]
题目链接:http://codeforces.com/gym/101981/attachments There are n heroes and m monsters living in an isl ...
- Magic Potion(最大流,跑两遍网络流或者加一个中转点)
Magic Potion http://codeforces.com/gym/101981/attachments/download/7891/20182019-acmicpc-asia-nanjin ...
- Gym101981I Magic Potion(最大流)
Problem I. Magic Potion There are n heroes and m monsters living in an island. The monsters became v ...
- HDU 4149 Magic Potion
意甲冠军: a[i] ^ x = f[i] ( i = 1...8 ) 和 ( a[1] + a[2] + ... + a[8] ) ^ x = f[9] 如今f为已知 求x 思路: 从低位到高位确 ...
- Gym - 101981I The 2018 ICPC Asia Nanjing Regional Contest I.Magic Potion 最大流
题面 题意:n个英雄,m个怪兽,第i个英雄可以打第i个集合里的一个怪兽,一个怪兽可以在多个集合里,有k瓶药水,每个英雄最多喝一次,可以多打一只怪兽,求最多打多少只 n,m,k<=500 题解:显 ...
- 2018 ACM/ICPC 南京 I题 Magic Potion
题解:最大流板题:增加两个源点,一个汇点.第一个源点到第二个源点连边,权为K,然后第一个源点再连其他点(英雄点)边权各为1,然后英雄和怪物之间按照所给连边(边权为1). 每个怪物连终点,边权为1: 参 ...
- 2018ACM-ICPC亚洲区域赛南京站I题Magic Potion(网络流)
http://codeforces.com/gym/101981/attachments 题意:有n个英雄,m个敌人,k瓶药剂,给出每个英雄可以消灭的敌人的编号.每个英雄只能消灭一个敌人,但每个英雄只 ...
- Magic Potion(网络流)
原题链接 2018南京的铜牌题,听说学长他们上来就A了,我这个图论选手也就上手做了做,结果一言难尽...... 发此篇博客希望自己能牢记自己的菜... 本题大意:有n个heros和m个monsters ...
- 2018icpc南京/gym101981 I Magic Potion
题意: 若干个勇士,每个勇士只能杀特定的怪物.每个勇士只能杀1个怪,但是有一些药,喝了药之后能再杀一个,每个勇士只能喝一瓶药.问你最多杀多少怪. 题解: 按照如下建图套网络流板即可. 网上有题解说套D ...
随机推荐
- Java进阶篇(四)——Java异常处理
程序中总是存在着各种问题,为了使在程序执行过程中能正常运行,使用Java提供的异常处理机制捕获可能发生的异常,对异常进行处理并使程序能正常运行.这就是Java的异常处理. 一.可捕获的异常 Java中 ...
- Linux - ubuntu 16 打开SSH服务
ubuntu 16 打开SSH服务 1.查看是否启动进程 roott@jiqing-virtual-machine:~# ps -ef | grep sshd root 3477 1 0 18:36 ...
- 网口up不起来问题排查
最近处理一个问题,发现有的网口up不起来. ethtool eth6 Settings for eth6: Supported ports: [ FIBRE ] Support ...
- Django_404_403_500页面处理
需求: 进入上线环境,用户并没有权力知道出错信息,那我们需要对不同的出错信息返回不同页面提示,提升用户的体验 问题原因: 生产环境下,用户输入的url地址不正确,没有对应的view去处理这个url请求 ...
- linkin大话面向对象--包装类
Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢? 基本数据类型 包装类 byte Byte short Short int Int ...
- java中可变长参数的定义及使用方法
JAVA中可以为方法定义可变长参数( Varargs)来匹配不确定数量的多个参数,其定义用“...”表示.其实,这类似于为方法传了一个数组,且在使用方法上也和数组相同,如下: public void ...
- 《struts2》:指定多个配置文件和默认Action
转载:http://m.blog.csdn.net/article/details?id=51212968
- shell第四篇(上)
第四篇了解Shell 命令执行流程图 {网中人大哥推荐参考Learning the Bash Shell, 2nd Edition,第 178页:中文版229页} Shell 从标准输入或脚本中读取的 ...
- Android webView包装WebAPP
前言 Android webView 兼容体验真的差到了极点!! 前一阵子,老板要讲 WebAPP 放到 Android 和 iOS 里面,而我因为以前做过安卓,所以这方面就由我来打包, 原理是很简单 ...
- 6 个 Linux 运维典型问题
作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...