P4933 大师 题意 题目背景 建筑大师最近在跟着数学大师ljt12138学数学,今天他学了等差数列,ljt12138决定给他留一道练习题. 题目描述 ljt12138首先建了\(n\)个特斯拉电磁塔,这些电塔排成一排,从左到右依次标号为\(1\)到\(n\),第\(i\)个电塔的高度为\(h[i]\). 建筑大师需要从中选出一些电塔,然后这些电塔就会缩到地下去.这时候,如果留在地上的电塔的高度,从左向右构成了一个等差数列,那么这个选择方案就会被认为是美观的. 建筑大师需要求出,一共有多少种美…
题目传送门 题目大意:给你一个序列,求子序列为等差数列的子序列个数.序列长度$n<=2000$,最高的塔高$v<=20000$. 这种计数类的题,大概就是dp的套路了⑧.开始设计的是一个错误的状态:设$f[i][j]$为到前$i$个塔选了$j$个的方案数,但是我们再看一看就会发现这是错的,因为等差数列啊,我们并没有考虑公差鸭.所以我们再设计一个状态:设$f[i][j]$表示到第$i$个塔为止,公差为$j$的方案数.开始想的是$O(n^3)$算法 ,还要枚举公差,但是后来发现不需要特意枚举公差,…
题目大意:  值得注意的一点是题目要求的是这些子段之间的最大整数和.注意和Max Sum Plus Plus这个题目的区别. 题解: 线性区间DP,对每一段考虑取或者不取.定义状态dp[i][j]指的是前i个数分为j段. 如果第j段不选的话dp[i][j]=dp[i-1][j],直接就是上一个状态的值. 如果选得话,dp[i][j]=dp[i-part[j]][j-1]+sum[i]-sum[i-part[j]].前一共有i个数,第j段要占用i-part[j]个数,所以前j-1段要占用 i-pa…
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行 N 个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第 N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点. 乌龟棋中 M 张爬行卡片,分成4种不同的类型( M 张卡片中不一定包含所有 4 种类型的卡片,见样例),每种类型的卡片上分别标有 1,2,3,4个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数.游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行…
[题解]POJ1934 Trip (DP+记录方案) 题意: 传送门 刚开始我是这么设状态的(谁叫我DP没学好) \(dp(i,j)\)表示钦定选择\(i\)和\(j\)的LCS,然而你会发现这样钦定没什么用. 还不如当时初学者的时候的\(dp(i,j)\)表示考虑到\(i\)考虑到\(j\)的LCS...果然经典的是禁得起考验的... 考虑如何记录方案,第一个想法是直接暴力记录从哪转移的,但是这样显然不行.因为有很多重复的元素. 注意到题目保证本质不同的满足答案要求的串的个数是\(O(n)\)…
[题解]剪纸条(dp) HRBUST - 1828 网上搜不到题解?那我就来写一篇吧哈哈哈 最优化问题先考虑\(dp\),设\(dp(i)\)表示将前\(i\)个字符(包括\(i\))分割成不相交的回文子串的最小数目 直接模拟题意转移即可.初始化写在里面了,\(dp(i)=i\) \[ dp(i)=\min\{i,dp(j-1)\} \] 其中\(S[j\dots i]\)是一个回文串,\(O(n^2)\)预处理回文串即可,注意偶回文串和奇回文串. 刚开始想太多,这道题.以后遇最优化的题一定要花…
[题解]地精部落(DP) 设\(f_i\)表示强制第一个是谷的合法方案数 转移枚举一个排列的最大值在哪里,就把序列分成了互不相干的两个部分,把其中\(i-1\choose j-1\)的数字分配给前面部分,剩下的给后面.转移从所有可以转移的偶数过来 //@winlere #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; t…
Pearls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10558   Accepted: 5489 Description In Pearlania everybody is fond of pearls. One company, called The Royal Pearl, produces a lot of jewelry with pearls in it. The Royal Pearl has its…
题目链接 请看luogu第一篇题解 #include<cstdio> #include<algorithm> #include<cstring> #include<cctype> #include<cstdlib> #include<cmath> #define maxn 300 using namespace std; double f[maxn][maxn]; double g[maxn]; double p[maxn]; dou…
题面 传送门 分析 刚看到这道题时想的是跟最短哈密顿路类似的二进制状压DP,先用floyd处理距离 但是此题用二进制不够,应该用三进制 0,1,2分别表示未送,正在送,已送完 dp[s][i]表示当前送到任务状态为s,现在在点i 状态转移方程见代码 时间复杂度\(O(n^3+3^qqn\) 代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define…