
DP
文章平均质量分 67
Dave_L
这个作者很懒,什么都没留下…
展开
-
剪绳子(整数拆分使最大化乘积)问题 数学+dp解法
问题描述:将一段绳子剪成aaa段,长度分别为n1,n2,n3...nan_1, n_2, n_3 ... n_an1,n2,n3...na求max(n1∗n2∗n3∗na)max(n_1* n_2 * n_3 * n_a)max(n1∗n2∗n3∗na) , 其中,a>=2a >= 2a>=2动态规划解法dp[i] : 长度为 i 绳子的拆分得到的最大乘积为dp[i]假设第一次剪断后两段绳子分别为j 、 i-j , 有2种情况:Ⅰ 不剪了: dp[i]原创 2021-12-13 15:23:01 · 588 阅读 · 0 评论 -
leetcode72 + NC35 最小编辑代价 最小编辑距离 及其 空间优化
编辑距离题意:利用三种操作,将word1变为word2的最小步数。思路:设dp[i][j] 为将word1前i个字符变为word2前j个字符所需的最小步数。三种操作:插入:前i个和前j-1个编辑次数+1 ->dp[i][j-1] + 1删除:前i-1个和前j个的编辑次数+1 ->dp[i-1][j] + 1替换:前i-1个和前j-1个的编辑次数+1 -> dp[i-1][j-1] + 1class Solution {public: int minDistance原创 2021-10-19 11:30:00 · 258 阅读 · 0 评论 -
背包问题复习总结
关于初始化// dp[V] : 背包容量V获得的最大价值dp[i] = 0 => 背包容量最大Vdp[i] = -inf => 背包要求装满01背包dp[i][j] = max(dp[i-1][j], dp[i][j-v[i]] + w[i]);例题 #include <bits/stdc++.h> using namespace std; int main() { int n, V; int c, v, w; cin >原创 2021-06-10 15:43:06 · 208 阅读 · 0 评论 -
最长回文字串 Manacher算法 时间复杂度O(N) + 最长回文子序列
这个图很经典解释也很清楚了,但是我开始看也看不懂。。实在太菜了。解释一下重点部分:if(p[id]+id>i) p[i]=min(p[2*id-i],p[id]+id-i); p[id]是以id为中心点的回文串的半径,当i在其范围内时,i的半径取值需要考虑其是否完全包含在id内,如果包含就直接取值;不包含的话,不包含的部分还未匹配因此只能取已知的。j是i关于id点的原创 2017-07-03 20:05:36 · 936 阅读 · 0 评论 -
2018中国大学生程序设计竞赛 - 网络选拔赛1001 贪心 1003数学 1004费马大定理+奇偶数列法则 1007 循环节+线段树优化 1009 排列组合 1010树状数组维护dp
1001 题意:给一些城市的买卖价格,要求选择买或者卖一个或者不买不卖,问最后获得的最大利润。 思路:贪心 Code:#include &amp;lt;bits/stdc++.h&amp;gt;#define LL long long #define mp make_pairusing namespace std;typedef pair&amp;lt;LL,int&amp;gt; P;int main(){...原创 2018-08-29 12:30:49 · 454 阅读 · 0 评论 -
Bzoj2763 分层图最短路
Bzoj2763题意:在图上,有k次机会可以直接通过一条边而不计算边权,问起点与终点之间的最短路径。 思路:类似于求最短路经,但由于可以有k次机会不计算边权,所以需要加上一维状态表示用了几次机会。Code:#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;const int AX =...原创 2018-09-01 19:23:55 · 462 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 A签到 E状压dp I回文自动机维护回文串值 J 预处理 L 分层图最短路
A 思路:输出n-1 Code:#include &amp;amp;lt;bits/stdc++.h&amp;amp;gt;#define LL long long using namespace std;int main(){ int T; cin &amp;amp;gt;&amp;amp;gt; T; LL n ; while( T-- ){ c原创 2018-09-01 22:02:02 · 205 阅读 · 0 评论 -
Educational Codeforces Round 51 (Rated for Div. 2) A模拟 B 构造 Cmap暴力 D dp
ACode:#include <bits/stdc++.h>using namespace std;int main(){ int T; cin >> T ; string s ; while( T-- ){ cin >> s; int a = 0 , b = 0 , c = 0 ; int len = s.size() ; ...原创 2018-09-29 14:04:28 · 222 阅读 · 0 评论 -
Codeforces Round #523 (Div. 2) A模拟 B 贪心 排序 C dp D贪心排序
ACode:#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std ; int main(){ int n , S ; cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; S ; int res = S / n ; S -= res * n ; if( S ) res ++ ; cout &原创 2018-11-27 18:30:26 · 163 阅读 · 0 评论 -
练习赛15 C模拟 D模拟 E搜索 F 树+思维 G dp H求连通块
C 思路:模拟处理一下。 Code:#include &amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;gt;#define LL long long #define INF 0x3f3f3f3fusing namespace std;const int MOD = 1e9+7;const int AX = 3e5+66;int a[AX];int b[AX];char s[AX];i...原创 2018-08-02 17:36:29 · 216 阅读 · 0 评论 -
hdu5542 dp+二维树状数组
HDU5542 题意:求长度为m的上升子序列个数。 思路:用二维树状数组对于每个j建立一个树状数组,维护dp[i][j]前缀和。这个n只有1e3,可行。 Code:#include <bits/stdc++.h>#define LL long longusing namespace std;const int AX = 1e3+6;const int MOD = 1e...原创 2018-08-06 09:06:03 · 224 阅读 · 0 评论 -
Dp-基础 Poj3666- Making the Grade
A straight dirt road connects two fields on FJ's farm, but it changes elevation more than FJ would like. His cows do not mind climbing up or down a single slope, but they are not fond of an alternatin...原创 2018-05-08 20:43:00 · 224 阅读 · 0 评论 -
51nod 1154 回文串划分 Manacher+dp
1154 回文串划分基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 取消关注有一个字符串S,求S最少可以被划分为多少个回文串。例如:abbaabaa,有多种划分方式。a|bb|aabaa - 3 个回文串a|bb|a|aba|a - 5 个回文串原创 2018-04-19 14:45:32 · 249 阅读 · 0 评论 -
Poj1664 放苹果
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。Input 第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。Output 对输入的每组数据M和N,用一行输出相应的K。 Sample Input 17 3S原创 2018-05-05 17:51:13 · 326 阅读 · 0 评论 -
poj1953 递推
Background "KO-RE-A, KO-RE-A" shout 54.000 happy football fans after their team has reached the semifinals of the FIFA World Cup in their home country. But although their excitement is real, the Kor原创 2018-05-05 20:34:22 · 447 阅读 · 0 评论 -
poj 1176 免费馅饼
免费馅饼Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 59928 Accepted Submission(s): 21039Problem Description都说天上不会掉馅饼,但有一天gameboy原创 2018-05-06 14:11:47 · 272 阅读 · 0 评论 -
Dp练习 -Sakura数 简单数位DP
思路:简单数位DP,dp[pos][pre]表示枚举到pos位时前一位为pre。 考虑前导0以及数据范围自然溢出。Code:#include <bits/stdc++.h>#define LL unsigned long longusing namespace std;const int AX = 20+2;int a[AX];LL dp[AX][15];L...原创 2018-06-29 20:35:44 · 237 阅读 · 0 评论 -
练习赛4
A 题意:每个学校只有最强的队伍才能获得名次,输出12个获得名次的学校和队伍 思路:map一下。 Code:#include &amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;gt;#define LL long longusing namespace std;const int AX = 1e4+666;map&amp;amp;amp;amp;amp;amp;原创 2018-07-19 18:07:22 · 283 阅读 · 0 评论 -
练习赛11 A-01背包 C暴力 D并查集+优先队列 F大数 G期望 (随机游走)H最短路变形
A 思路:01背包,尽可能装满背包,并且价值最大。只需要加上一个判断条件,保证每次都能够将 j 值装满。 Code:#include &amp;lt;bits/stdc++.h&amp;gt;#define LL long long#define INF 0x3f3f3f3fusing namespace std;const int AX = 1e6+66;int v[AX];LL w[AX]...原创 2018-07-29 17:42:19 · 342 阅读 · 0 评论 -
2018"百度之星"程序设计大赛 - 资格赛 1001状压 1002 前缀和 1003 BFS寻路的KM算法 1005 dp+树状数组 1006最小生成树
1001 题意:给n份问卷,每个问卷m道题,每题只有A,B两种选项,问存在多少个问题集合,使得只保留这些问题后至少k对卷子不同。 思路:状压,最大只有(1&amp;amp;amp;amp;lt;&amp;amp;amp;amp;lt;10),用二进制表示选择了哪些题,转为数字,统计这个数字出现的次数 num , num * ( n - num ) 就是这个集合对 不同卷子对数 贡献的2倍,除以2(去重),跟k比较。 Code:#include ...原创 2018-08-06 08:32:57 · 1042 阅读 · 4 评论 -
Dp基础-Divisibility dfs+记忆化
Consider an arbitrary sequence of integers. One can place + or - operators between integers in the sequence, thus deriving different arithmetical expressions that evaluate to different values. Let us,...原创 2018-05-08 20:34:34 · 219 阅读 · 0 评论