USACO 3.2 Stringsobits(DP)
这个题差不多算是记录路径的DP,题目很短,然后本来以为很水的。最近水过习惯了,竟然敲了个暴力,各种TLE,然后换了种方式水,还是水不过去,后台的k很大,所以O(k)的算法是不可能过的。这就开始纠结了,开始的时候有想过是不是DP问题,状态转移很容易发现,不过这个题目是求第k大的,然后尝试用DP写了写,挂在一个大数据了,不好检查,自己出了几个数据,检查出了BUG,如果确定了第i位为1之后,再更新的时候sum[i]数组,在最后一次改了int之后,终于过了!!!
1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: kimbits 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <map> 10 using namespace std; 11 long long dp[60][60],sum[50]; 12 int o[50]; 13 int main() 14 { 15 int i,j,z; 16 long long n,m,k; 17 freopen("kimbits.in","r",stdin); 18 freopen("kimbits.out","w",stdout); 19 scanf("%lld%lld%lld",&n,&m,&k); 20 dp[1][1] = 1; 21 dp[1][0] = 1; 22 for(i = 2; i <= n; i ++)//状态转移 23 { 24 dp[i][0] = dp[i-1][0]; 25 for(j = 1; j <= i&&j <= m; j ++) 26 { 27 dp[i][j] += dp[i-1][j];//第i位是0 28 dp[i][j] += dp[i-1][j-1];//第i位是1 29 } 30 } 31 z = 1; 32 while(k&&z) 33 { 34 memset(sum,0,sizeof(sum)); 35 if(k == 1) 36 { 37 break; 38 } 39 for(i = 1; i <= n; i ++)//这里写的效率不是很高,DP的复杂度很小就无所谓了。 40 { 41 for(j = 0; j <= i&&j <= m; j ++) 42 sum[i] += dp[i][j]; 43 } 44 for(i = n; i >= 1; i --) 45 { 46 if(k > sum[i]) 47 { 48 o[i+1] = 1; 49 k -= sum[i]; 50 m --; 51 break; 52 } 53 else if(k == sum[i]) 54 { 55 for(j = i; j >= i-m+1&&j >= 1; j --) 56 o[j] = 1; 57 z = 0; 58 break; 59 } 60 } 61 } 62 for(i = n; i >= 1; i --) 63 printf("%d",o[i]); 64 printf("\n"); 65 return 0; 66 }
转载于:https://www.cnblogs.com/naix-x/archive/2012/11/19/2778010.html
USACO 3.2 Stringsobits(DP)相关推荐
- USACO / Cow Pedigrees(DP)
农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < 200).这些二叉树有如下 ...
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...
- Perfect service(树形dp)
Perfect service(树形dp) 有n台机器形成树状结构,要求在其中一些机器上安装服务器,使得每台不是服务器的计算机恰好和一台服务器计算机相邻.求服务器的最小数量.n<=10000. ...
- 子矩阵(暴搜(全排列)+DP)
子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一 ...
- 求三角形最大面积(DP)
求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...
- 最大搜索二叉子树大小(树形dp)
给定一颗二叉树的头节点head,返回这棵二叉树中最大的二叉搜索子树 (二叉搜索树:该二叉树中左子树所有节点比它小,右子树所有节点比它大 ): 思路: 这是一道分析可能性求解在二叉树上做类似动态规划的问 ...
- 形态形成场(矩阵乘法优化dp)
形态形成场(矩阵乘法优化dp) 短信中将会涉及前\(k\)种大写字母,每个大写字母都有一个对应的替换式\(Si\),替换式中只会出现大写字母和数字,比如\(A→BB,B→CC0,C→123\),代表 ...
- HDU 1520 Anniversary party(树形dp)
HDU 1520 Anniversary party(树形dp) 树形dp第一题!!! 题意很清晰,思路也很明确.很容易找到根节点,即最大的boss,通过根节点向下dp. 状态转移方程: int to ...
- 「SDOI2016」储能表(数位dp)
「SDOI2016」储能表(数位dp) 神仙数位 \(dp\) 系列 可能我做题做得少 \(QAQ\) \(f[i][0/1][0/1][0/1]\) 表示第 \(i\) 位 \(n\) 是否到达上界 ...
最新文章
- kubernetes API Server 权限管理实践
- 【错误记录】Google Play 上架报错 ( 您的应用包含违反“元数据”政策的内容 | GP 政策中心 )
- Python基础入门:高效的集合操作
- React总结篇之六_React高阶组件
- 娱乐项目和女朋友哪个重要?
- Java自学笔记(16):常用类:Math,Data和Calender,Format,Scanner
- 适用于各类软件工具下载页面官网单页静态网站源码
- java oo 封装_javaOO——封装、static、成员内部类
- Java基础学习总结(96)——Java虚拟机JVM及Tomcat中的JVM有关内存的设置与调优
- 首个完全武器化的 Spectre Exploit 现身
- 常见算法之12---求a^n%p
- Altium Designer 2020 学习笔记(四)------PCB布线、DRC检查、拼版设计、资料输出(配动态图操作演示)
- steam令牌 未能连接到服务器,连接错误无法连接到steam网络怎么办 steam网络连接错误解决方法【图文】...
- gmail谷歌邮箱开启SMTP
- 表单提交时报错:No result defined for action com.ylj.action.BbsAction and result input
- jp.ne.so_net.ga2.no_ji.jcom.JComException: createInstance() failed HRESULT=0x800401F3L
- 一文读懂自然语言处理NLP
- 映美FP-530K+打印发票卡纸
- js中导入引用外部js
- Uboot中start.S源码的指令级的详尽解析
热门文章
- python手机软件-Python爬虫:抓取手机APP的数据
- python提高办公效率-用Python的这3个优点,让工作效率提升一倍
- python爬虫原理-python爬虫之认识爬虫和爬虫原理
- 软件测试用python一般用来做什么-python软件测试
- c++强大还是python强大-2020,你该学习Python还是C++
- python csv读取-Python对于CSV文件的读取与写入
- python培训出来的有公司要吗-python培训机构出来好就业吗
- python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载
- 用python处理excel-使用Python操作Excel文档(一)
- python对于办公有什么帮助-日常工作中python能够有哪些帮助?