自己YY了个DP:设f[n][l]为n位数中包含不超过l个1的总个数

f[n][l]=f[n-1][l]+f[n-1][l-1]

然后用_search()从高位向低位扫描即可,tmp记录当前已记下多少个数了(这些数肯定都比第I个小)

一开始f数组的初值YY错了,看了nocow改过来就好了

 1 /*
 2 PROB:kimbits
 3 LANG:C++
 4 */
 5 #include <stdio.h>
 6 #include <cstring>
 7 int N,L,tmp;
 8 long long I;
 9 int a[1000];
10 int f[1000][1000];
11
12 void _search(int n,int l)
13 {
14     if ((n<=0)||(l<=0)) return;
15     int t1=f[n-1][l],t2=f[n-1][l-1];
16     if (tmp+t1>=I)
17     {
18         a[n]=0;
19         _search(n-1,l);
20     }
21     else
22     {
23         tmp=tmp+t1;
24         a[n]=1;
25         _search(n-1,l-1);
26     }
27 }
28
29 int main()
30 {
31     freopen("kimbits.in","r",stdin);
32     freopen("kimbits.out","w",stdout);
33
34     scanf("%d%d%lld",&N,&L,&I);
35
36     memset(f,0,sizeof(f));
37     for (int i=0;i<=N;i++)
38     {
39         f[i][0]=1;
40         f[0][i]=1;
41     }
42
43     for (int i=1;i<=N;i++)
44         for (int j=1;j<=L;j++)
45             if (j>i)
46                 f[i][j]=f[i][i];
47             else
48                 f[i][j]=f[i-1][j]+f[i-1][j-1];
49           // XXXXX =  0XXXX  +  1XXXX
50 /*
51     for (int i=1;i<=N;i++)
52     {
53         for (int j=1;j<=N;j++)
54             printf("%d ",f[i][j]);
55         printf("\n");
56     }
57 */
58     tmp=0;
59     _search(N,L);
60
61     for (int i=N;i>=1;i--)
62         printf("%d",a[i]);
63     printf("\n");
64
65     return 0;
66 }

View Code

转载于:https://www.cnblogs.com/pdev/p/4029531.html

USACO 3.2 kimbits DP相关推荐

  1. USACO 3.2 Stringsobits(DP)

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

  2. USACO / Cow Pedigrees(DP)

    农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < 200).这些二叉树有如下 ...

  3. USACO比赛题泛刷

    随时可能弃坑. 因为不知道最近要刷啥所以就决定刷下usaco. 优先级排在学习新算法和打比赛之后. 仅有一句话题解.难一点的可能有代码. 优先级是Gold>Silver.Platinum刷不动. ...

  4. USACO黄金级 USACO白金级

    USACO黄金级 参赛资格:通过银级比赛的选手难度等级:需要有一定的算法基础,理解一些抽象的方法(例:最短路径,动态规划),并且学生要对数据结构有比较深的了解. USACO信息学奥赛例题和算法金牌部分 ...

  5. usaco Postal Vans(dp)

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

  6. BSOJ4217 【USACO 2013 Feburary Gold】旅行线路 DP(双路递推)

    4217 -- [USACO 2013 Feburary Gold]旅行线路 Description 贝西经营着一家旅行社,一天贝西带着几队游客沿着亚马逊河旅行,河的两边分布着一些景点,每个景点都对应 ...

  7. ACM 130. [USACO Mar08] 游荡的奶牛(dp+BFS)

    130. [USACO Mar08] 游荡的奶牛 ★☆   输入文件:ctravel.in   输出文件:ctravel.out   简单对比 时间限制:1 s   内存限制:128 MB 奶牛们在被 ...

  8. 学校作业-Usaco DP水题

    好吧,因为USACO挂掉了,所以我写的所有代码都不保证正确性[好的,这么简单的题,再不写对,你就可以滚粗了! 第一题是USACO 2.2.2 ★Subset Sums 集合  对于从 1 到 N 的连 ...

  9. ACM 131. [USACO Mar08] 奶牛渡河(线性dp)

    131. [USACO Mar08] 奶牛渡河 ★☆   输入文件: cowriver.in   输出文件: cowriver.out    简单对比 时间限制:1 s   内存限制:128 MB F ...

最新文章

  1. 【记录】常用的vim插件及配置和使用
  2. 配置一个 MVC 项目时 遇到的
  3. matlab如何将相近的数据,matlab新手,求帮助!主要是如何将数据和公式导入
  4. kafka专题:kafka的Topic主题、Partition分区、消费组偏移量offset等基本概念详解
  5. (22)FPGA比较器设计(第5天)
  6. 【重磅】App内可直接打开微信小程序,新增内容安全接口等
  7. 本周没有学习,估计用脑过度...
  8. 什么叫做支路_家庭电路用什么开关?不同的开关有什么用?主开关用漏保更好吗?...
  9. 月日加四位尾数编号生成 VB方式
  10. android 一位小数_android如何保留小数点后x位数字
  11. 机器学习:self-paced 和 fine-tuning
  12. gossip协议学习笔记
  13. window7或8下,U盘安装Centos6.5双系统,问题总结
  14. perror和strerror的使用和区别
  15. 亲历校招面试问答【回顾记录】
  16. 第六诫:应专注一个领域
  17. EXCEL中的滑动时间窗使用
  18. centos6.8离线安装HDP
  19. ESXI中损坏虚拟机数据找回
  20. 微信小程序制作楼栋鸟瞰分布图

热门文章

  1. 【UVA624 01背包中的路径问题】
  2. 在二叉树中找值为x的结点(假设所有结点的值都不一样)
  3. [解析]多线程加锁Lock调用python2
  4. linux内核 header.s,Linux启动代码header.S研究
  5. 通俗讲解 RESTful
  6. 记录ASP.NET CORE 3 部署过程
  7. 和 Houdini, CSS Paint API 打个招呼吧
  8. Objective-C RunTime 学习笔记 之 AutoReleasPool
  9. {ldelim},{rdelim} - smarty 内建函数
  10. SQL Developer更改日期显示格式