NYOJ-744蚂蚁的难题(一)

这个题都说是水题,楞是没做出来,看了好多题解,感觉这个规律没看懂,后来在讨论区看到了一个题解,感觉有点懂了,写一下自己的理解

首先要明白异或的意思,简单一句话: 同0异1,既然这样,让求区间a,b 中异或最大的一个,那么最大的一组是多少呢,多谢几组数据,先求出来 a ^ b的值,因为这是求最大的基础,令x=a^b,那么x二进制第一个1应该出现在b为1,并且a为0, 因为b > a, 这个可以动手实验一下,那么由于任意取的两个数是位于a和b之间的,所以,这任意两个数的二进制位数一定是小于等于x二进制位数的,因为他是个区间,所以一定可以找到使得x的二进制的第一个1之后的各位全为1,那么这个最大值,这时候也就变成了x的二进制位数全为1的值,令n = x的二进制位数,结果就是2^n-1,举个例子,5 和 7, 那么5的二进制为101, 7的二进制为111,5^7=010,第一个1出现在第二位,那么1右边的那个0一定可以变化着两个数的值得到,即最大值去5,6,所以异或之后为3,二进制即为11,所以也就是2^2-1 = 3;

代码如下:

 1
 2 #include <cstdio>
 3
 4 using namespace std;
 5
 6 int main()
 7 {
 8
 9     long long a, b;
10     while (~scanf("%lld %lld", &a, &b))
11     {
12
13         long long x = a ^ b;
14         int c = 0;
15         while (x)
16         {
17             c++;
18             x >>= 1;
19         }
20         long long res = 1;
21         for (int i = 0; i < c; i++)
22         {
23             res *= 2;
24         }
25         printf("%lld\n", res - 1);
26     }
27     return 0;
28 }        
时间: 2024-10-28 21:47:32

NYOJ-744蚂蚁的难题(一)的相关文章

NYOJ 744 蚂蚁的难题(一)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=744 标准水题目..找规律即可.. 题解: 找规律水题,任取两组数即可,如4,8.计算得这个区间异或最大值为7^8=15=(1111)2=2^4-1; 再任意找一组数2,6,计算得这个区间异或最大值为2^5=7=(111)2=2^3-1; 通过上述分析可得知最大值为2^n-1,而n正是右边界的数的二进制位数. #include <stdio.h> int main() { long l

nyoj 744 蚂蚁的难题(一)

蚂蚁的难题(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小蚂蚁童鞋最近迷上了位运算,他感觉位运算非常神奇.不过他最近遇到了一个难题: 给定一个区间[a,b],在区间里寻找两个数x和y,使得x异或y最大.来,帮帮他吧! 输入 有多组测试数据(以EOF结尾). 每组数据输入两个数a,b.(0<=a<b<2^63) 输出 输出a到b之间,异或最大的值. 样例输入 1 2 8 9 样例输出 3 1 思路:  多进行数据测试发现:每次的输出结果为2^n -

NYOJ 745 蚂蚁的难题(二)

蚂蚁的难题(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 下雨了,下雨了,蚂蚁搬家了. 已知有n种食材需要搬走,这些食材从1到n依次排成了一个圈.小蚂蚁对每种食材都有一个喜爱程度值Vi,当然,如果Vi小于0的时候,表示蚂蚁讨厌这种食材.因为马上就要下雨了,所以蚂蚁只能搬一次,但是能够搬走连续一段的食材.时间紧急,你快帮帮小蚂蚁吧,让它搬走的食材喜爱值和最大. 输入 有多组测试数据(以EOF结尾).每组数据有两行,第一行有一个n,表示有n种食材排成了一个圈.(

nyoj 747 蚂蚁的难题(三)

蚂蚁的难题(三) 时间限制:2000 ms  |  内存限制:65535 KB 难度:4 描述 蚂蚁终于把尽可能多的食材都搬回家了,现在开始了大厨计划. 已知一共有 n 件食材,每件食材有一个美味度 Ai 和新鲜度 Bi , 如果蚂蚁在第t时刻将第i样食材烹饪成功,则得到Ai-t*Bi 的美味指数,当然,用第i件食材做饭要花去 Ci 的时间. 众所周知,蚂蚁的厨艺不怎么样,所以他需要你设计做饭方案使得在时间 T 内完成的美味指数最大. 输入 有多组测试数据. 第一行是两个正整数,表示蚂蚁的做饭时

nyoj936蚂蚁的难题(X)

<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">蚂蚁的难题(X)</span> 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 蚂蚁又遇到一个难题. 有一个圆锥,地面半径为A(单位:cm),高度为H(单位:cm),现在蚂蚁位于其中一条母线R与底面的交点P处,母

NYOJ 1069 生活的难题

 生活的难题 时间限制:1500 ms  |  内存限制:240000 KB 难度:3 描述 生活又调皮了,整天不好好的集训,还偷偷的看电影!今天终于被逮到了.于是万恶的BOSS们就出了一个题来为难为难他.题目是这样的,输入一个整型数组,数组里除了两个数出现一次之外,其它所有数字出现的次数都是2次,求这两个数字的乘积. 输入 第一行输入一个整数T(T<=5),表示有T组测试数据. 每组数据占两行,第一行为一个数N(2<=N<=1000),表示有N个数:第二行有N个数,1<=a[

NYOJ-745 蚂蚁的难题(二)【动态规划】

蚂蚁的难题(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 下雨了,下雨了,蚂蚁搬家了. 已知有n种食材需要搬走,这些食材从1到n依次排成了一个圈.小蚂蚁对每种食材都有一个喜爱程度值Vi,当然,如果Vi小于0的时候,表示蚂蚁讨厌这种食材.因为马上就要下雨了,所以蚂蚁只能搬一次,但是能够搬走连续一段的食材.时间紧急,你快帮帮小蚂蚁吧,让它搬走的食材喜爱值和最大. 输入 有多组测试数据(以EOF结尾). 每组数据有两行,第一行有一个n,表示有n种食材排成了一个圈.

NYIST 749 蚂蚁的难题(八)

蚂蚁的难题(八)时间限制:2000 ms | 内存限制:65535 KB难度:5 描述蚂蚁是一个古玩爱好者,他收藏了很多瓶瓶罐罐. 有一天,他要将他的宝贝们一字排开, 摆放到一个长度为L的展台上. 已知他有n件宝贝, 每件宝贝的宽为w,由于这些瓶瓶罐罐的形状特殊,所以在摆放时需要至少X的宽度来摆放他们,(仅摆放时需要X的宽度, 摆放后宽度仍为w)现在已知了每件宝贝的宽度wi,和摆放它们所需的宽度Xi.请你帮蚂蚁计算一下,在这个展台上,他最多能摆多宽的宝贝. 输入有多组测试数据.对于每一组测试数据

蚂蚁的难题(三)

蚂蚁的难题(三) 时间限制:2000 ms  | 内存限制:65535 KB 难度:4 描述 蚂蚁终于把尽可能多的食材都搬回家了,现在开始了大厨计划. 已知一共有 n 件食材,每件食材有一个美味度Ai 和新鲜度 Bi , 如果蚂蚁在第t时刻将第i样食材烹饪成功,则得到Ai-t*Bi的美味指数,当然,用第i件食材做饭要花去 Ci 的时间. 众所周知,蚂蚁的厨艺不怎么样,所以他需要你设计做饭方案使得在时间T 内完成的美味指数最大. 输入 有多组测试数据. 第一行是两个正整数,表示蚂蚁的做饭时间T和食

NYOJ 625 笨蛋的难题(二)

笨蛋的难题(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 笨蛋就业了,并且是在上千应聘中脱颖而出的,和他一起脱颖而出的还有傻子.公司的老板对二人视为珍宝,为了激励他们的工作热情,给他们一小时发一次工资(很高兴吧).但每次只发给一个人,并且每次发的工资可能不同(老板很厉害吧).傻子和笨蛋为了证明自己比对方智商高,他们事先知道每次发的工资的多少.他们暗中达成协议:他们不是将工资平分,而是轮流领取.该领工资的人可以选择跳过一个或多个小时的工资,而领取后面的工资.跳