UVA 10718 Bit Mask

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #define sc3(x,y,z)  scanf("%lld%lld%lld", &x, &y, &z)
 6 #define pf(x)    printf("%lld\n",x)
 7 #define FOR(i,b,e)    for(int i=b;i<=e;i++)
 8 #define FOR1(i,b,e)    for(int i=b;i>=e;i--)
 9 #define CL(x,y)      memset(x,y,sizeof(x))
10 using namespace std;
11 typedef long long ll;
12 ll bit[35];
13 int a[35];
14 void init()
15 {
16     bit[0] = 1;
17     FOR(i,1,31)
18     {
19         bit[i] = 2 * bit[i-1];
20     }
21 }
22 int main()
23 {
24     ll N, L, U, MAX;
25     init();
26 //    cout << bit[0] << endl;
27     while(~sc3(N, L, U))
28     {
29         MAX = 0;
30         FOR(i,0,31)
31         {
32             a[i] = N % 2;
33             N /= 2;
34         }
35         FOR1(i,31,0)
36         {
37             MAX += bit[i];
38             if((a[i] == 0 && MAX > U) || (MAX > L && a[i] == 1))//后面的条件是考虑可适合范围中最小的max值
39                 MAX -= bit[i];
40         }
41         pf(MAX);
42     }
43     return 0;
44 }

主要考虑的是二进制问题,还有其中合适范围内的最小的ans值,是一道不错的思维题

时间: 2024-10-07 18:31:47

UVA 10718 Bit Mask的相关文章

uva 10718 Bit Mask (位运算)

uva 10718 Bit Mask 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

uva 10718 Bit Mask(位操作贪心)

这道题目我没怎么想就去看题解了,原因只是因为我觉得我想不出来,真没有自信啊...唉,真没有钻入题目进去的 恒心...慢慢培养,不能再这样了,不能轻易看题解啊... 分析: 首先题目中已经说了枚举肯定会超时的,所以呢,网上看到的是枚举32比特位,然后和n与,来判断当前位是1还是0, 如果是0的话,就换成1,除非换成1后比区间的最大值还要大.因为换成一能保证最后或的结果最大. 如果是1的话,就换成0(这样能保证结果相同的情况下选的数最小)除非换成0后它的最大值比区间最小值还要小,就 是说当前位后面所

UVA题目分类

题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494 - Kindergarten Counting Game 414 - Machined Surfaces 490 - Rotating Sentences 445 - Marvelous Mazes

UVA - 12046 Great Numbers

Description Problem G - Great Numbers In this problem you have to count the number of great numbers of length n. Here a great number must have the following property: the number must be divisible by all of its decimal digits. it does not contain any

UVA 11825 - Hackers&amp;#39; Crackdown 状态压缩 dp 枚举子集

UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集 ACM 题目地址:11825 - Hackers' Crackdown 题意: 有一个由编号0~n-1的n台计算机组成的网络,一共同拥有n种服务,每台计算机上都执行着所有服务,对于每台计算机,你能够选择停止一项服务,这个行为会导致与这台计算机和与他相连的其它计算机上的这项服务都停止(原来已经停止的继续保持停止状态). 求最多能使多少个服务瘫痪(即没有不论什么一台计算机在执行这项服务). 分析: 题目说白了.就

uva 1590 - IP Networks(IP地址)

习题4-5 IP网络(IP Networks, ACM/ICPC NEERC 2005, UVa1590) 可以用一个网络地址和一个子网掩码描述一个子网(即连续的IP地址范围).其中子网 掩码包含32个二进制位,前32-n位为1,后n位为0,网络地址的前32-n位任意,后n位为0. 所有前32-n位和网络地址相同的IP都属于此网络. 例如,网络地址为194.85.160.176(二进制为11000010|01010101|10100000|10110000), 子网掩码为255.255.255.

UVA 562 Dividing coins --01背包的变形

01背包的变形. 先算出硬币面值的总和,然后此题变成求背包容量为V=sum/2时,能装的最多的硬币,然后将剩余的面值和它相减取一个绝对值就是最小的差值. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define N 50007 int c[102],d

UVA 10341 Solve It

Problem F Solve It Input: standard input Output: standard output Time Limit: 1 second Memory Limit: 32 MB Solve the equation: p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0 where 0 <= x <= 1. Input Input consists of multiple test cases and te

UVA 11014 - Make a Crystal(容斥原理)

UVA 11014 - Make a Crystal 题目链接 题意:给定一个NxNxN的正方体,求出最多能选几个整数点.使得随意两点PQ不会使PQO共线. 思路:利用容斥原理,设f(k)为点(x, y, z)三点都为k的倍数的点的个数(要扣掉一个原点O).那么全部点就是f(1),之后要去除掉共线的,就是扣掉f(2), f(3), f(5)..f(n).n为素数.由于这些素数中包括了合数的情况,而且这些点必定与f(1)除去这些点以外的点共线,所以扣掉.可是扣掉后会扣掉一些反复的.比方f(6)在f