UVa 10718 Bit Mask (贪心&位运算)
来源:互联网 发布:妈妈比女儿漂亮 知乎 编辑:程序博客网 时间:2024/05/16 09:21
10718 - Bit Mask
Time limit: 3.000 seconds
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1659
In bit-wise expression, mask is a common term. You can get a certain bit-pattern using mask. For example, if you want to make first 4 bits of a 32-bit number zero, you can use 0xFFFFFFF0 as mask and perform a bit-wise AND operation. Here you have to find such a bit-mask.
Consider you are given a 32-bit unsigned integerN. You have to find a maskM such that L ≤ M ≤ U and N OR M is maximum. For example, ifN is 100 andL = 50, U = 60 thenM will be 59 andN OR M will be 127 which is maximum.If several value ofM satisfies the same criteria then you have to print the minimum value ofM.
Input
Each input starts with 3 unsigned integers N, L, U where L ≤ U. Input is terminated by EOF.
Output
For each input, print in a line the minimum value of M, which makesN OR M maximum.
Look, a brute force solution may not end within the time limit.
Sample Input
Output for Sample Input
100 50 60
100 50 50
100 0 100
1 0 100
15 1 15
59
50
27
100
1
贪心思路:
从高位往低位考虑,
若n的第i位是0,则m需尽量在这一位为1,且在这一位变为1后m<=U;
若n的第i位是1,则m需尽量在这一位为0,但m不能太小以至于当L在这一位为1时m<L。
完整代码:
/*0.013s*/#include<cstdio>typedef unsigned int ui;int main(){ui n, l, u, m, temp;int i;while (~scanf("%u%u%u", &n, &l, &u)){m = 0;for (i = 31; i >= 0; --i){///若n的第i位是0,则m需尽量在这一位为1,且在这一位变为1后m<=U///若n的第i位是1,则m需尽量在这一位为0,但m不能太小以至于当L在这一位为1时m<L///注意n<L这种情况temp = m | (1u << i);///位运算形式的m + (1u << i)if (((n >> i) & 1) == 0 && temp <= u || (l >> i) & 1 && m < l) m = temp;}printf("%u\n", m);}return 0;}
- UVA 10718 Bit Mask 贪心+位运算
- UVa 10718 Bit Mask (贪心&位运算)
- UVA - 10718 Bit Mask(贪心+位运算)
- uva 10718 Bit Mask(位操作贪心)
- uva 10718 Bit Mask (位运算)
- uva 10718 Bit Mask (位运算)
- UVA - 10718 Bit Mask 贪心
- Bit Mask uva+贪心
- UVA 10718 Bit Mask (快速幂 + 贪心)
- uva 10718 Bit Mask(贪心)
- UVa 10718 - Bit Mask
- UVa 10718 - Bit Mask
- uva 10718 - Bit Mask
- uva 10718 - Bit Mask
- UVA 10718 Bit Mask
- UVa 10718 - Bit Mask
- uva 10718 Bit Mask
- UVA - 10718 Bit Mask
- mac 配置tomcat(译)
- Hibernate出现Unsupported major.minor version 51.0错误
- linux内核文件翻译-Mount options for ADFS
- Mac OS X Lion下配置Tomcat7
- CODE 105: Remove Element
- UVa 10718 Bit Mask (贪心&位运算)
- linux shell I/O 重定向
- USACO--starry--模拟
- 算法入门数学题hdoj 1004
- CentOS上搭建MPICH2开发环境的步骤
- SWT JFace 常用组件
- 判断多边形是顺时针还是逆时针的方法
- 虚拟机中ubuntu设置静态IP
- history命令