HDU 5661 Claris and XOR 贪心
题目链接:
hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5661
bc(中文):http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=686&pid=1002
题解:
考虑从高位到低位贪心,对于每一位,
(1)、如果x,y只有唯一的取法,那么只能这么取;否则贪心地必须使答案的这一位等于1。
(2)、如果x,y都是0,1都能取,则设这是从右向左数第len位,因为x,y能取的值一定都是连续的一段,因此x,y的后len位都能取0111...1(len-1个1)和1000...0(len-1个0)(否则做不到从右向左数第len位都能取0,1)。也就是说,后len位的贡献一定能达到可能的上界111...1(len个1)。此时不必继续考虑后面的位。
(3)、如果x,y在这一位并不是0,1都能取,那么由于要使得答案的这一位等于1,也只有唯一的取法。
至此,这一位考虑完毕,然后根据选取的方案,修正一下x和y的范围(只有第(3)种情况要考虑调整x,y范围,比如说如果在第i位,x可以选0,也可以选1,则x选0后b中比i小的位数会变成全1,如果x选1,则a中比i小的位数会变全零),然后对后一位继续这样处理即可。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL; const LL one=; int n; int main(){
int tc;
scanf("%d",&tc);
while(tc--){
LL a,b,c,d;
int tag1,tag2,tag3,tag4;
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
LL ans=;
for(int i=;i>=;i--){
tag1=tag2=tag3=tag4=;
if(a&(one<<i)) tag1=;
if(b&(one<<i)) tag2=;
if(c&(one<<i)) tag3=;
if(d&(one<<i)) tag4=;
// if(i<=3) printf("(%d,%d,%d,%d)\n",tag1,tag2,tag3,tag4);
if((tag1^tag2)&&(tag3^tag4)){
ans|=((one<<(i+))-);
break;
}else if(!(tag1^tag2)&&!(tag3^tag4)){
if(tag1^tag3){
ans|=(one<<i);
}
}else if(tag1^tag2){
if(tag1^tag3){
b=(one<<i)-;
}else{
a=;
}
ans|=(one<<i);
}else if(tag3^tag4){
if(tag3^tag1){
d=(one<<i)-;
}else{
c=;
}
ans|=(one<<i);
}
}
printf("%lld\n",ans);
}
return ;
}
HDU 5661 Claris and XOR 贪心的更多相关文章
- hdu 5661 Claris and XOR
Claris and XOR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- BC之Claris and XOR
http://acm.hdu.edu.cn/showproblem.php?pid=5661 Claris and XOR Time Limit: 2000/1000 MS (Java/Others) ...
- Claris and XOR(模拟)
Claris and XOR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU5661 Claris and XOR
我们求二进制是怎么求的呢:先看看二进制的每一位代表多大:.......32 16 8 4 2 1 假如n=10, ..... 32>n ,不要. 16>n,不要. 8<=n,要,然后 ...
- HDU 5813 Elegant Construction (贪心)
Elegant Construction 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5813 Description Being an ACMer ...
- HDU 5802 Windows 10 (贪心+dfs)
Windows 10 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5802 Description Long long ago, there was ...
- HDU 5500 Reorder the Books 贪心
Reorder the Books Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- HDU 5938 Four Operations 【贪心】(2016年中国大学生程序设计竞赛(杭州))
Four Operations Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDU 3697 Selecting courses(贪心)
题目链接:pid=3697" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=3697 Prob ...
随机推荐
- 笔记本电脑、VM虚拟机、开发板三者网线连接互ping
笔者在做NFS挂接练习时,发现网上的资料大部分是笔记本电脑(以下简称PC)和虚拟机PING.PC和开发板PING,这样的方式不是我想要的.笔者需要使用无线网卡上网,使用有线网卡进行三者互PING.在开 ...
- Python学习之——Oracle数据库连接
一.安装Oracle客户端 1.下载对应安装文件,官网地址:http://www.oracle.com/technetwork/database/database-technologies/insta ...
- Python3 图像识别(二)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 以图搜图的使用已经非常广泛了,我现在来介绍一下简单的以图搜图的相关算法及其实践. 一.感知hash算法 感知哈希算 ...
- String in Java
- CALL TRANSACTION
概要 SUBMITと違い.トランザクションコードで呼び出すのが特徴. アドオンからの伝票照会やバッチインプットによるSAPへのデータ登録/更新処理にも利用される. なお.呼び出された側から呼び出し元へ ...
- Springboot 报找不到对应的Mapper接口或RPC接口等问题
解决方法: 在Service引用中找到对应的Mapper引用.RPC引用: 给org.springframework.beans.factory.annotation.Autowired注解设置一个r ...
- django中models的filter过滤方法
__gt 大于__gte 大于等于 __lt 小于 __lte 小于等于 __in 存在于一个list范围内 __startswith 以...开头 __is ...
- 20155320 2016-2017-2 《Java程序设计》第二周学习总结
20155320 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周主要学习了java语言的基础语法,我发现与以前学过的c语言有许多共同点,无论是从一些基本 ...
- jdk各种老版本的下载链接
java SE 1.6各个版本 jdk api http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downlo ...
- Retinex图像增强和暗通道去雾的关系及其在hdr色调恢复上的应用
很多人都认为retinex和暗通道去雾是八杆子都打不着的增强算法.的确,二者的理论.计算方法都完全迥异,本人直接从二者的公式入手来简单说明一下,有些部分全凭臆想,不对之处大家一起讨论. 首先,为描述方 ...