题目链接:http://poj.org/problem?id=3252

题意: 一个数的二进制表示中0的个数大于等于1的个数则称作Round Numbers。求区间[L,R]内的 Round Numbers的个数。

思路:

int c[N][N];

void init()
{
    int i,j;
    FOR0(i,N) 
    {
        c[i][0]=c[i][i]=1;
        for(j=1;j<i;j++) c[i][j]=c[i-1][j-1]+c[i-1][j];
    }
}

int n,m;
int b[N],num;

int cal(int n)
{
    if(n<=1) return 0;
    num=0;
    while(n) b[num++]=n&1,n>>=1;
    num--;
    int ans=0,i,j,k;
    for(i=num;i>=1;i--)
    {
        if(i&1)
        {
            k=i/2;
            for(j=k+1;j<=k+k;j++) ans+=c[k+k][j];
        }
        else
        {
            k=i/2;
            for(j=k;j<=k+k-1;j++) ans+=c[k+k-1][j];
        }
    }
    int n0=0,n1=0;
    for(i=0;i<=num;i++)
    {
        if(b[i]) n1++;
        else n0++;
    }
    if(n1<=n0) ans++;
    n0=0; n1=1;
    for(i=num-1;i>=0;i--)
    {
        if(b[i]==0) n0++;
        else
        {
            for(j=i;j>=0&&j+n0+1>=i-j+n1;j--) ans+=c[i][j];
            n1++;
        }
    }
    return ans;
}

int main()
{
    init(); 
    Rush(n)
    {
        RD(m);
        PR(cal(m)-cal(n-1));
    }
}

POJ 3252 Round Numbers(组合)的更多相关文章

  1. [ACM] POJ 3252 Round Numbers (的范围内的二元0数大于或等于1数的数目,组合)

    Round Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8590   Accepted: 3003 Des ...

  2. POJ 3252 Round Numbers 组合数学

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13381   Accepted: 5208 Description The ...

  3. POJ 3252 Round Numbers

     组合数学...(每做一题都是这么艰难) Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7607 A ...

  4. poj 3252 Round Numbers(数位dp 处理前导零)

    Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...

  5. POJ 3252 Round Numbers 数学题解

    Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...

  6. POJ 3252 Round Numbers(组合数学)

    Round Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10223   Accepted: 3726 De ...

  7. POJ 3252 Round Numbers(数位dp&amp;记忆化搜索)

    题目链接:[kuangbin带你飞]专题十五 数位DP E - Round Numbers 题意 给定区间.求转化为二进制后当中0比1多或相等的数字的个数. 思路 将数字转化为二进制进行数位dp,由于 ...

  8. POJ - 3252 - Round Numbers(数位DP)

    链接: https://vjudge.net/problem/POJ-3252 题意: The cows, as you know, have no fingers or thumbs and thu ...

  9. poj 3252 Round Numbers 【推导·排列组合】

    以sample为例子 [2,12]区间的RoundNumbers(简称RN)个数:Rn[2,12]=Rn[0,12]-Rn[0,1] 即:Rn[start,finish]=Rn[0,finish]-R ...

随机推荐

  1. redis常见性能问题和解决方案?

    Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照. Master AOF持久化, ...

  2. C++ 字符串相关函数

    <转>自:http://zhidao.baidu.com/question/173202165.html 首先就是memcpy表头文件: #include <string.h> ...

  3. Bluetooth

    Android provides a default Bluetooth stack, BlueDroid, that is divided into two layers: The Bluetoot ...

  4. 【软件工程-Teamwork 3】团队角色分配和团队贡献分分配规则

    Part 1 团队角色分配 1.人员分配概要: Project Manager:1名 / Developer:4名 / Test: 1名 2.具体人员分配及职责: Project Manager(PM ...

  5. mysql innodb 引擎

    innodb 引擎 一.概述 InnoDB 是一个用的比较广泛的存储引擎,因为它支持事物和外键,还有不错的效率;我们先看看官方教程怎么说; 我们先读一下, 对于上面的文档, 对一个InnoDB的表首先 ...

  6. C#textbox右击弹出菜单

    给窗口体拖一个contextMenuTrip 控件,也就是右键菜单控件,这时你就不要给这个控件写内容了, 选中textBox 然后点属性窗口,把它的contextMenuTrip 属性选中你刚才托的那 ...

  7. uva 10771

    思路题 K的人数只能以2减少 #include <cstdio> #include <cstdlib> #include <cmath> #include < ...

  8. uva 10626

    dp 记忆化搜索 3个1元和1个10元的情况不能少 #include <cstdio> #include <cstdlib> #include <cmath> #i ...

  9. uva 10304

    最优二叉查找数 看了这位大牛 的博客 http://www.cnblogs.com/lpshou/archive/2012/04/26/2470914.html /****************** ...

  10. Chp17: Moderate

    17.1 swap a number in place.(without temporary variables) a = a ^ b; b = a ^ b; a = a ^ b; 17.3 Writ ...