【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)

来源:互联网 发布:windows软件性能测试 编辑:程序博客网 时间:2024/05/16 11:18

题目链接:

  http://acm.hdu.edu.cn/showproblem.php?pid=5491

题目大意:

  一个数D(0<=D<231),求比D大的第一个满足:二进制下1个个数在[s1,s2]范围内。D已经满足[s1,s2]。

题目思路:

  【贪心】【模拟】

  首先将这个数转成二进制统计总共1的个数s,再求出末尾连续0和1的个数n0,n1。

  如果最后一位是0:

    s=s2,那么为了保证s<s2且答案>D,先设ans=d+lowbit(d),此时满足了新的s<s2且答案>D,但这时有可能s<s1,需要从最低位开始补1。

    s<s2,那么ans=n+1为答案。

  如果最后一位是1:先ans=n+1在看新的s(s只减不增)

    s<s1,那么从最低位开始补1。

    否则,ans即为答案



////by coolxxx//#include<bits/stdc++.h>#include<iostream>#include<algorithm>#include<string>#include<iomanip>#include<map>#include<stack>#include<queue>#include<set>#include<bitset>#include<memory.h>#include<time.h>#include<stdio.h>#include<stdlib.h>#include<string.h>//#include<stdbool.h>#include<math.h>#define min(a,b) ((a)<(b)?(a):(b))#define max(a,b) ((a)>(b)?(a):(b))#define abs(a) ((a)>0?(a):(-(a)))#define lowbit(a) (a&(-a))#define sqr(a) ((a)*(a))#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))#define mem(a,b) memset(a,b,sizeof(a))#define eps (1e-8)#define J 10000#define mod 1000000007#define MAX 0x7f7f7f7f#define PI 3.14159265358979323#define N 44using namespace std;typedef long long LL;int cas,cass;int n,m,lll,ans;LL aans;LL e[N];int a[N];int s,s1,s2,n0,n1;void init(){int i;e[0]=1;for(i=1;i<32;i++)e[i]=e[i-1]<<1;}int main(){#ifndef ONLINE_JUDGE//freopen("1.txt","r",stdin);//freopen("2.txt","w",stdout);#endifint i,j,k;init();//for(scanf("%d",&cass);cass;cass--)for(scanf("%d",&cas),cass=1;cass<=cas;cass++)//while(~scanf("%s",s+1))//while(~scanf("%d",&n)){scanf("%d%d%d",&n,&s1,&s2);s=n1=n0=0;mem(a,0);m=n;if(n==0)a[0]=1;while(m){a[++a[0]]=m&1;s+=m&1;m>>=1;}if(a[1]==0){for(i=1;i<=a[0] && a[i]==0;i++)n0++;for(;i<=a[0] && a[i]==1;i++)n1++;if(n0){if(s==s2){aans=1LL*n+lowbit(n);s=s+1-n1;n0+=n1;if(s<s1){for(i=0;i<s1-s;i++)aans+=e[i];}}else{aans=1LL+n;}}}else{for(i=1;i<=a[0] && a[i]==1;i++)n1++;for(;i<=a[0] && a[i]==0;i++)n0++;s=s+1-n1;aans=1LL+n;if(s<s1){for(i=0;i<s1-s;i++)aans+=e[i];}}printf("Case #%d: %lld\n",cass,aans);}return 0;}/*////*/


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1岁半幼儿拉肚子怎么办 宝宝打嗝呕吐胃难受怎么办 3岁宝宝发烧还吐怎么办 孩子喝水都吐怎么办啊 宝宝吃多了呕吐怎么办 3岁宝宝吐怎么办才好 儿童受凉肚子疼发热呕吐怎么办 两岁宝宝半夜呕吐怎么办 两岁宝宝吐了怎么办 2岁宝宝发烧吐怎么办 2岁多宝宝呕吐是怎么办 2周岁宝宝中暑了怎么办 2岁半宝宝着凉呕吐怎么办 3岁宝宝吐了几次怎么办 一岁宝宝恶心吐怎么办 9个月宝宝一直吐怎么办 晚上冻着了呕吐怎么办 2岁宝宝一直吐怎么办 两岁宝宝门牙龋齿怎么办 两岁宝宝得龋齿怎么办 两岁宝宝长龋齿怎么办 宝宝2岁不吃饭怎么办 两岁宝宝总是吐怎么办 3岁儿童受凉呕吐怎么办 两岁宝宝四天没拉大便怎么办 两岁宝宝发烧吐怎么办 四岁宝宝吐了怎么办啊 3岁宝宝突然吐了怎么办 宝宝撑着了吐拉怎么办 2岁宝宝体温37.5怎么办 宝宝2岁乳牙烂了怎么办 孕40周还没入盆怎么办 孕妇脸上长斑了怎么办 七个月宝宝大便干怎么办 两月大婴儿不拉大便怎么办 周岁宝宝大便出血了怎么办 十一个月宝宝大便干燥怎么办 8个月宝宝大便干燥怎么办 7个月宝宝大便干燥怎么办 11个月宝宝大便干燥怎么办 9个月宝宝大便干燥怎么办