Codeforces 484(#276 Div 1) B Maximum Value 筛法

题意:给你一个数组,问你其中 对于  1 <= i,j <= n  ai > aj  中  ai % aj 的最大值是多少

解题思路:筛法求每个数的倍数 ,并找到数组中存在的在它左边离这个倍数最近的树(可以预处理出来)

解题代码:

 1 // Author: darkdream
 2 // Created Time: 2014年11月06日 星期四 00时24分10秒
 3
 4 #include<vector>
 5 #include<list>
 6 #include<map>
 7 #include<set>
 8 #include<deque>
 9 #include<stack>
10 #include<bitset>
11 #include<algorithm>
12 #include<functional>
13 #include<numeric>
14 #include<utility>
15 #include<sstream>
16 #include<iostream>
17 #include<iomanip>
18 #include<cstdio>
19 #include<cmath>
20 #include<cstdlib>
21 #include<cstring>
22 #include<ctime>
23 #define LL long long
24
25 using namespace std;
26 int main(){
27     int n ;
28     LL l , r;
29     scanf("%d",&n);
30     for(int i = 1;i <= n;i ++)
31     {
32         LL ans = 0 ;
33         scanf("%I64d %I64d",&l,&r);
34         for(int i = 62 ;i >= 0 ;i --)
35         {
36             if((r&(1ll << i)) != 0 )
37             {
38                 if((l & (1ll << i)) != 0 )
39                 {
40                     ans += (1ll << i);
41                     r &=  (~(1ll << i));
42                     l &=  (~(1ll << i));
43                 }else{
44                     if((1ll << (i+1))-1 <= r)
45                     {
46                         ans +=  (1ll << (i+1)) -1;
47                     }
48                     else ans += (1ll << i ) - 1;
49                     break;
50                 }
51             }
52
53         }
54         printf("%I64d\n",ans);
55     }
56     return 0;
57 }

时间: 2024-10-14 06:42:15

Codeforces 484(#276 Div 1) B Maximum Value 筛法的相关文章

Codeforces Round #276 (Div. 2)D - Maximum Value(筛法)

就是一种筛法思想的应用. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<cmath> #include<map> #include<set> #include<vector> #include<algorithm> #include<

Codeforces 484(#276 Div 1) A Bits 乱搞

题意:给你一个非负整数范围,求其中二进制中 1 最多且数字最小的数 解题思路:乱搞,找到两个数第一个不匹配的位数,将后面的位都赋值为1(如果右端点这位本身就是1,则从这一位开始), 解题代码: 1 // Author: darkdream 2 // Created Time: 2014年11月06日 星期四 00时24分10秒 3 4 #include<vector> 5 #include<list> 6 #include<map> 7 #include<set&

Codeforces 484(#276 Div 1) D Kindergarten DP

题意:给你一个数组,让你把连续的数分为一组,每一组的值为这一组数中的极差,问你这个怎样分组才能使得数组的极差和最大 解题思路: 可以分成 4种情况讨论 dp[i]  表示前 i+1项能得到的最大值 状态                                       状态转移方程 a[i-1] < a[i]  < a[i+1]        dp[i] = dp[i-1] + a[i+1] - a[i] a[i-1] > a[i]  < a[i+1]        dp

Codeforces Round #276 (Div. 1)

Codeforces 484 A. Bits 做题感悟:这题不难,是一个构造题,找一下规律就好. 解题思路: 假如两个数的二进制位数分别是 a ,b.(这里假设 a < b)  , 当 b - a >= 1 时只有两种情况可以选择 (1 << b) - 1  or  (1<<a) -1  ,这里当然先判断前一个是否满足,当 a = b 的时候,枚举两个数的每一位,如果出现小的数当前位为 0 ,且大的数当前位为 1 ,那么也有两种情况选择要么当前位加上后面的所有位都为 1

Codeforces Round #276 (Div. 1)Maximum Value

题意很好理解,就是让你搞到两个数a[i],a[j]使得a[i]>a[j]且a[i]%a[j]最大,然后把最大值输出来. 然后,我就开始乱搞了,时间复杂度有点高,O(n*sqrt(max(a[i])); 很容易得出一个结论 如果a[i]>a[j]且a[i]/p==a[j]/p那么a[j]%p>a[j]%p. 那么就开始乱搞了枚举p,如果全部枚举了复杂度就变成O(n*max(a[i]))了. 我们可以只枚举p*p<a[i]的部分,剩下的肯定是连续的1.2.3.4...p.语文不好,不知

Codeforces Round #221 (Div. 1) B. Maximum Submatrix 2 dp排序

B. Maximum Submatrix 2 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/375/B Description You are given a matrix consisting of digits zero and one, its size is n × m. You are allowed to rearrange its rows. What is

Codeforces Round #276 (Div. 1) A. Bits 贪心

A. Bits Let's denote as  the number of bits set ('1' bits) in the binary representation of the non-negative integer x. You are given multiple queries consisting of pairs of integers l and r. For each query, find the x, such that l ≤ x ≤ r, and is max

Codeforces Round #221 (Div. 2) D. Maximum Submatrix 2 (思维题)

题目地址:codeforces 221 D 这场是人生中做的第一场CF中的D题.(当时只做出来了A题..)过年之际回顾了一下,就顺便看了几道D题.现在做CF的D题在比赛时还是做不出来.但是赛后往往都可以自己做出来.据说D题能在比赛中稳出的话就可以区域赛银了.于是争取以后CF能稳出4道题吧. 这道题刚开始不该看标签的..给的是DP..于是就一直朝着DP方向想.但是感觉不像是DP.就换了个思路,就做出来了. 大体方法是先预处理出每一行中每个数向左延伸最长的连续1的个数.然后对每一行的进行排序(我这里

Codeforces Round #276 (Div. 1)D.Kindergarten DP贪心

D. Kindergarten In a kindergarten, the children are being divided into groups. The teacher put the children in a line and associated each child with his or her integer charisma value. Each child should go to exactly one group. Each group should be a