http://www.cppblog.com/yuziyu/archive/2009/07/03/89191.html

首先计算出组合数。用cmb_num[i][j]表示i位数中,"1的位数小于等于j"的数的个数。
这样,我们从最左边开始,如果cmb_num[i-1][j]的数大于n,说明第一位为0,因为用i-1位数中"1的位数小于等于j"的数已经大于n个了。
如果小于n,说明第一位为1,需要i位,才能使"1的位数小于等于j"的数大于n个了。既然第一位已经是1了,接下来的i-1位组成的数的1的个数只能小于等于n-1位了。迭代输出每一位即可。
只是要注意溢出的问题以及cmb_num[0][1]。

#include <iostream>
#include <fstream>using namespace std;ifstream fin("kimbits.in");
ofstream fout("kimbits.out");#ifdef _DEBUG
#define out cout
#define in cin
#else
#define out fout
#define in fin
#endifunsigned int cmb_num[32][32];void build_cmb_num()
{for(int i=0;i<32;++i)cmb_num[i][0] = 1;for(int i=1;i<32;++i)for(int j=1;j<=i;++j)cmb_num[i][j] = cmb_num[i-1][j-1]+cmb_num[i-1][j];for(int i=0;i<32;++i)for(int j=1;j<32;++j){cmb_num[i][j]+=cmb_num[i][j-1];}
}void solve()
{build_cmb_num();unsigned  n,l,i;in>>n>>l>>i;for(unsigned idx=n;idx>0;--idx){if( i> cmb_num[idx-1][l] ){out<<1;i-=cmb_num[idx-1][l];l--;}else{out<<0;}   }out<<endl;
}int main(int argc,char *argv[])
{solve(); return 0;
}

USACO 3.2 Stringsobits相关推荐

  1. USACO 3.2 Stringsobits(DP)

    这个题差不多算是记录路径的DP,题目很短,然后本来以为很水的.最近水过习惯了,竟然敲了个暴力,各种TLE,然后换了种方式水,还是水不过去,后台的k很大,所以O(k)的算法是不可能过的.这就开始纠结了, ...

  2. [USACO Section 3.2] 01串 Stringsobits (动态规划)

    题目链接 Solution 贼有意思的 DP, 也可以用组合数学做. \(f[i][j]\) 代表前 \(i\) 位,有 \(j\) 个 \(1\) 的方案数. 转移方程很简单 : \(f[i][j] ...

  3. usaco Stringsobits

    dp好理解,下面的输出第i打个数是在太巧妙了.dp[i][j]表示i位上1个数少于j的个数. 假设求第t大的数. 当t>dp[i-1][j]的时候,假如第i位是0后面怎么凑都出凑不到t个出来.如 ...

  4. usaco Shaping Regions

    这就是usaco 前面的windows area的变形. /* ID:jinbo wu TASK:rect1 LANG:C++ */ #include<iostream> #include ...

  5. usaco Postal Vans(dp)

    是哈密顿回路,然后...就不知道怎么写了 ,以前写过类似的不过情况没这么多也没这么复 usaco training 6.1.1 Postal Vans 题解 标签: usaco training题解d ...

  6. usaco Beef McNuggets

    这两天贼烦,ccf炸了,还有一个烦心事.哎我都不知道自己能不能坚持下去了.马上期末考了.这段时间还是抓紧时间复习吧同时刷usaco的节奏要跟以前一样了,毕竟课少了. 题解: 只要你知道以下的数论结论, ...

  7. usaco前两章小结

    usaco 暑假老师有推荐做但是那个题目太长了,而且·大部分都是废话做起来特别慢,而且当时自己基本上什么都不懂,太难了所以看了题解做了两题就放弃了. 转眼就上学了,因为想学习acm所以就胡乱找题做但是 ...

  8. usaco ★Fractions to Decimals 分数化小数

    ★Fractions to Decimals 分数化小数 写一个程序,输入一个形如 N/D 的分数(N 是分子,D 是分母),输出它的小数形式. 如果小数有循环节的话,把循环节放在一对圆括号中.例如, ...

  9. usaco ★Bessie Come Home 回家

    ★Bessie Come Home 回家 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有 ...

最新文章

  1. bzoj1927: [Sdoi2010]星际竞速
  2. 软件工程系列教材:软件架构设计实践教程
  3. 开源大数据周刊-第103期
  4. 前端学习(1662):前端系列实战课程之div跟随鼠标移动
  5. php里isset的属性,测试PHP中变量是否存在的最佳方法;isset()显然已损坏
  6. oracle 不认exp指令,更改oracle字符集导致exp命令出错(解决方法)
  7. 贾跃亭:FF未来主义者们最终所要创造的社会价值 一定会得到资本市场的认可...
  8. Useful link
  9. 安装ffmpeg及nginx模块
  10. abaqus的python安装文件在哪_Abaqus2016安装教程【附软件下载地址】
  11. 偏心率计算公式matlab,结构计算整体指标(3)——扭转位移比及楼层偏心率
  12. 用python爬虫写一个属于自己的彩虹屁生成器!
  13. 计算机linux二级试题,浙江省计算机等级考试二级考试试题库
  14. 网课/网校/知识付费/在线教育系统,100%全功能开源,可免费商用
  15. C博客作业00--我的第一篇博客
  16. HDU 4417 Super Mario(离线 + 树状数组)
  17. C# 使用Interop.Excel一些报错的对应
  18. Javascript如何阻止事件的默认行为?
  19. 广告 文案中最能赚钱的10个关键词
  20. GoReplay 流量压测工具的使用

热门文章

  1. 华为vrrp默认优先级_华为的VRRP怎么配置
  2. 分布式内存数据库---Redis操作String、list、set、hash和Zset
  3. android 中的组合控件的设计
  4. 【机器学习算法专题(蓄力计划)】七、机器学习中数据的相关分析
  5. 八、深入Go 编程语言接口
  6. 利用学习率衰减找到最优结果(基于Iris数据集)
  7. NeurlPS 2021论文预讲会议题全公开,4大主题和25场报告等你来
  8. 热门的模型跨界,Transformer、GPT做CV任务一文大盘点
  9. NeurIPS 2020 | 自步对比学习:充分挖掘无监督学习样本
  10. 大规模计算时代:深度生成模型何去何从