zoukankan      html  css  js  c++  java
  • Codeforces #250 (Div. 2) B. The Child and Set

    版权声明:本文为博主原创文章,未经博主同意不得转载。

    https://blog.csdn.net/u011639256/article/details/28100041

    题读错了啊。。。

    一直跪,但刚開始我的思路是正确的

    假设做出来了rating一定会暴涨的抓狂

    我的方法是找出1到100000全部数相应的lowbit()值

    再暴力,可惜题读错了,lowbit的意思是找出该数二进制数从右向左1出现的最早位置相应的数值

    代码例如以下:

    #include <cmath>
    #include <stack>
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #define MAXN 100010
    #define ll long long
    using namespace std;
    
    int a[] = {1, 2, 4, 8, 16, 32, 64, 128,
                256, 512, 1024, 2048, 4096, 8192,
                16384, 32768, 65536, 131072};
    int b[MAXN];
    int c[MAXN];
    ll sum[MAXN];
    
    void f(void) {
        sum[0] = 0;
        for(int i=1; i<MAXN; ++i) {
            for(int j=0; j<18; ++j) {
                if(i & a[j]) {
                    b[i] = a[j];
                    break;
                }
            }
            sum[i] = sum[i-1]+b[i];
        }
        return ;
    }
    
    int main(void) {
        ll s, k;
        int tmp;
        f();
        while(cin >> s >> k) {
            int cnt = 0;
            if(s > sum[k]) {
                printf("-1
    ");
                continue;
            }
    
            for(int i=k; i>0; --i) {
                if(s-b[i] > 0) {
                    s -= b[i];
                    c[cnt++] = i;
                }
                else if(s-b[i] == 0) {
                    c[cnt++] = i;
                    break;
                }
            }
            
            printf("%d
    ", cnt);
            printf("%d", c[0]);
            for(int i=1; i<cnt; ++i)
                printf(" %d", c[i]);
            cout << endl;
        }
        return 0;
    }


查看全文
  • 相关阅读:
    poj 2411 Mondriaan's Dream 骨牌铺放 状压dp
    zoj 3471 Most Powerful (有向图)最大生成树 状压dp
    poj 2280 Islands and Bridges 哈密尔顿路 状压dp
    hdu 3001 Travelling 经过所有点(最多两次)的最短路径 三进制状压dp
    poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp
    poj 1185 炮兵阵地 状压dp
    poj 3254 Corn Fields 状压dp入门
    loj 6278 6279 数列分块入门 2 3
    VIM记事——大小写转换
    DKIM支持样本上传做检测的网站
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10878010.html
  • Copyright © 2011-2022 走看看