![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 62
力铭君
因为无知与恐惧所以人类才渴望上帝,但这同时也是一切善的源头
展开
-
51nod 1009 数字1的数量
给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。Input输入N(1 Output输出包含1的个数Input示例12Output示例5数位dp,这里重点解释一下这句话: if(!limit && dp[pos原创 2017-04-29 18:41:17 · 521 阅读 · 0 评论 -
Foj 2173 Nostop
题目如下:DescriptionM国有N个城市,H条单向的道路,AekdyCoin从编号为1的城市出发,每经过一条道路要花一个单位的时间。假设他出发的时刻为0,他需要在K时刻到达编号为N的城市。并且,AekdyCoin不会在一个城市停留,每到一个城市他要立刻往下一个城市出发,最后在K时刻时他必须在城市N。虽然AekdyCoin经过任意一条道路的花费的时间都是1,但是每条道路的过原创 2017-04-21 23:20:07 · 445 阅读 · 1 评论 -
fzu 2172 辣鸡题 胡乱DP的典型
出题人dp一定学的菜如狗才能出出来这种辣鸡题题目如下:大师兄在取经途中迷上了ACM-ICPC,稍不留神,师傅就被妖怪抓走了。 大师兄并不着急去救师傅,在虐这道简单题: 有两个字符串A和B,每一次可以选择以下操作中的一种,只对字符串A进行操作,用最少的操作使得字符串A与字符串B相等:在字符串A中插入一个字符;在字符串A中删除一个字符;将字符串A复制,得到字原创 2017-04-21 19:15:04 · 340 阅读 · 0 评论 -
玲珑学院 1097
题目的意思就不多赘述了题解:我们发现,对于每一个B工厂,它都应该尽量寻找编号较小的A工厂供货,如果Bi工厂选择了Aj工厂供货的话,那么Bj工厂就只能选择Aj之后的工厂进行供货了,有没有发现它特别像在找最长递增子序列呢?于是我们可以把它转化为最长递增子序列并求解,转化方式为:对于每Bi工厂,能给他供货的A工厂从大到小的无重复的放入dp数组里,然后Bi+工厂,能给他供货的A工厂也要从大到小原创 2017-03-05 21:27:13 · 313 阅读 · 0 评论 -
编辑距离问题
其实这里只需要搞懂一个问题,就很好解决了:对于某种需要删除的操作,把这步操作改成添加会不会影响结果?对于某种需要增加的操作,改成删除会不会影响结果?答案都是不会啊,也就是说删除或者增加对于后面的操作都是没影响的,于是思路就来了:对于dp[i][j]代表考虑i个A串元素,j个B串元素后的最短操作距离。那么对于dp[i][j]怎么算呢?如果A[i]!原创 2016-11-27 13:38:10 · 340 阅读 · 0 评论 -
循环数组的最大子段和
是个很有意思的东西,为什么呢,因为你很难计算循环 数组的最大字段,时间复杂度太高了,但是还是有思路的,哈哈哈思路如下:ans=max(普通的最大子段和, 总和 – 普通的“最小子段和”)为什么这么说呢?因为如果最大子段是断开的,那么说明最小子段和是连续的啊。如: 1 8 9 -1 -2 9 8 7代码如下:#include #include #inclu原创 2016-11-27 13:32:05 · 199 阅读 · 0 评论 -
51 nod 最长公共子序列
这是一道很有意思的题,为什么这么说呢?因为它需要记录你所保存的子序列是什么样子的。思路如下:设两个串分别为A,B;1 计算子序列的长度:思路为dp[i][j]代表考虑i个A串元素和j个B串元素的最长子串,然后考虑新加入一个K元素(K元素可以属于A或者B任意一个)后最长子串会不会增加2 当最长子串增加的时候代表当前考虑的字符很可能是答案上的一个字符,因此记录,记录方式为开一个结构原创 2016-11-27 13:14:58 · 193 阅读 · 0 评论 -
最长单增子序列
最近看到了一个很短的方法,可以让你免于写二分查找,因此贴出来,另外顺便介绍一下这个问题的解决方法;大致问题描述如下:输入一个n代表有n个数字,然后输入n个数字(-10^9首先说一说思路(复杂度为n*log(n)的思路)假设原序列为A,最终目标序列为B 。顺序考虑A里面的每一位元素,如果这个元素比B里面的每一位都大,那么就把它放到最后,否则让它替换大于或等于它的中原创 2016-09-27 12:02:50 · 626 阅读 · 0 评论