
动态规划
策马奔腾向前冲
这个作者很懒,什么都没留下…
展开
-
划分成回文子串 UVa 11584
输入一个由小写字母组成的字符串,你的任务是把它划分成尽量少的回文串。例如,racecar本身就是回文串;fastcar只能分成7个单字母的回文串,aaadbccb最少分成3个回文串:aaa,d,bccb。字符串的长度不超过1000. 分析:d[i]为字符0~i划分成的最小回文串的个数,则d[i]=min{d[j]+1|s[j+1~i]是回文串}。可以先用O(n^2)时间预处理s[i...j]是否...原创 2019-08-13 19:02:59 · 211 阅读 · 0 评论 -
统计1~N中数字x出现的次数
统计1~N中数字2出现的次数 例:N=abcdefg 例: 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。 比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。 #include <bits/stdc++.h> using namespa...原创 2019-08-10 08:07:39 · 2880 阅读 · 0 评论 -
区间DP---石子合并
区间DP以“区间长度”作为DP的“阶段”,使用两个坐标(区间的左、右端点)描述每个维度。一个状态由若干个比它更小且包含于它的区间所代表的的状态转移而来,因此区间DP的决策往往就是划分区间的方法。 例:石子合并 设有N堆石子排成一排,其编号为1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量...原创 2019-09-06 14:39:24 · 242 阅读 · 0 评论