随笔分类 - 动态规划--------------------------
摘要:【题意】给定正边权有向图,车油量上限C,每个点可以花费pi加油至min(C,ci),走一条边油-1,T次询问s点出发带钱q,旅行路程至少为d的最多剩余钱数。 n<=100,m<=1000,C<=10^5,q<=n^2。 【算法】动态规划 【题解】官方题解 虽然不是DAG,但是由于q很小的特点,将q加
阅读全文
摘要:【题意】一开始车上有编号为0~a的红茶,过程中出现的红茶编号仅有[0,b),有三种操作: 1.买进编号未在车上出现过的红茶。 2.丢掉车上指定编号的红茶。 3.将最早丢出去的红茶捡回来。 每次操作后求编号最小的不在车上的红茶。 【算法】单调队列 【题解】本题最重要的性质在于早丢早捡。 因此,当进行丢
阅读全文
摘要:【题意】求从字符串A中取出k个互不重叠的非空子串顺序拼接形成B的方案数。n<=1000,m<=100,k<=m。 【算法】动态规划 【题解】这题主要是将从i-l转移变成从i-1转移,从而省略l这一维的枚举(等价于记录前缀和,将信息顺序传递过来)。 f[i][j][k]表示字符串A到i,字符串B到j,
阅读全文
摘要:【题意】Universal Online Judge 【算法】状态压缩型DP 【题解】看数据范围大概能猜到是状压了。 根据三点确定一条抛物线,枚举两个点之间的抛物线,再枚举有多少点在抛物线上(压缩为状态c[]),这样预处理出至多n*n/2+n条抛物线。(注意加上只经过一点的抛物线) 然后f[i]表示
阅读全文
摘要:【资料】 ★记忆化搜索:数位dp总结 之 从入门到模板 by wust_wenhao 论文:浅谈数位类统计问题 数位计数问题解法研究 【记忆化搜索】 数位:数字从低位到高位依次为0~len-1。 高位限制limit=limit&&i==a[pos] 前导零lead=lead&&i==0 数位pos=
阅读全文
摘要:【题意】给定只含小写字母的字符串,要求分割成若干段使段内字母重组顺序后能得到回文串,求最少分割段数。n<=2*10^5 【算法】DP 【题解】关键在于快速判断一个字符子串是否合法,容易发现合法仅当不存在或只存在一个奇数字符,其余字符均为偶数。 当涉及到奇偶性(%2)时,很自然能想到异或。 将小写字母
阅读全文
摘要:【算法】数位DP 【题解】 记忆化搜索 #include<cstdio> #include<algorithm> #include<cstring> #define ll long long using namespace std; ll A[10],B[10],f[20][11],a[20],p[
阅读全文
摘要:【参考】 浅析竞赛中一类数学期望问题的解决方法 信息学竞赛中概率问题求解初探 WC2018冬令营课件《概率与期望及其应用》曹文 【概率的定义】 基本事件是一次实验可能出现的不可再分解的直接结果,样本空间Ω是全体基本事件的集合,随机事件是若干基本事件组成的集合。 事件的并:事件C=”事件A与事件B至少
阅读全文
摘要:【题意】给定DAG带边权连通图,保证所有点都能到达终点n,每个点等概率沿边走,求起点1到终点n的期望长度。n<=10^5。 【算法】期望DP 【题解】f[i]表示到终点n的期望长度。 f[n]=0 f[i]=(f[j]+e[i].w)/k[i],i-->j,k[i]是i的出度。 因为是点x等概率出发
阅读全文
摘要:【题意】给定一排n根杆高度hi,一个常数C,杆升高x的代价为x^2,相邻两杆之间架设电话线代价为高度差*C,求总代价最小。 【算法】DP+辅助数组优化 【题解】令f[i][j]表示第i根杆高度为j的最小代价。 f[i][j]=min(f[i-1][k]+C*|j-k|+(a[i]-j)^2)。复杂度
阅读全文
摘要:【题目】洛谷10月月赛R1 提高组 【算法】递推DP+树状数组 【题解】列出DP递推方程,然后用树状数组维护前后缀和。 #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #d
阅读全文
摘要:【题意】给定n道题,每月末发放工资m,要求从1解到n,每道题需要在当月初付费ai,下月初付费bi,多道题可以安排在同月,求最少月数。 【算法】DP 【题解】参考自:【bzoj1700】Problem Solving 解题 dp by GXZlegend 因为当月的选择同时关系着当月和下月,贪心是错误
阅读全文
摘要:【题意】给定s个股票和d天,给出价格矩阵s*d,每天可以买入或卖出整数倍股票,初始资金m,求最大利益。m<=200000,s<=50,d<=10。 【算法】完全背包 【题解】关键在于转化:第一天买入-第三天卖出,相当于,第一天买入-第二天卖出-第二天买入-第三天卖出。那么买卖股票就变成相邻两天的事情
阅读全文
摘要:【算法】树形DP 【题解】没有上司的舞会?233 f[x][0]=∑max(f[v][0],f[v][1]) f[x][1]=(∑f[v][0])+1 #include<cstdio> #include<algorithm> #include<cstring> using namespace std
阅读全文
摘要:【算法】区间DP 【题解】回文问题的套路做法:区间DP。 f[i][j]表示区间i~j回文的最小代价,则有f[i][j]=min{①②③}。 ①f[i+1][j]+min(a[s[i]],b[s[i]]) ②f[i][j-1]+min(a[s[j]],b[s[j]]) ③f[i+1][j-1],s[
阅读全文
摘要:【算法】DP+数学优化 【题意】把n个1~m的数字分成k段,每段的价值为段内不同数字个数的平方,求最小总价值。n,m,ai<=40000 【题解】 参考自:WerKeyTom_FTD 令f[i]表示把前i个数分成若干段的最小价值。 转移中我们定义,从i开始往前到有j个不同的数的最小位置为b[j]。
阅读全文
摘要:【算法】基环树DP 【题意】给定若干有向基环树,每个点能走的最远路径长度。 【题解】 参考:【BZOJ1589】Trick or Treat on the Farm 基环树裸DP by 空灰冰魂 考虑DAG上DP,令f[x]表示点x开始能到达的最远长度,则f[x]=f[y]+1,x >y。 环套树最
阅读全文
摘要:【算法】动态规划+组合数学 【题意】有一个h行w列的棋盘,定义一些格子为不能走的黑点,现在要求从左上角走到右下角的方案数。 【题解】 大概能考虑到离散化黑点后,中间的空格子直接用组合数计算。 然后解决容斥问题就很重要了。 定义f[i]为走到第i个黑点且不经过其它黑点的方案数。 f[i]=calc(x
阅读全文
摘要:【算法】树型DP 【题意】给定含n个点的树的形态,和n个数字Xv,要求给每个点赋予黑色或白色和权值,满足对于每个点v,子树v中和v同色的点的权值和等于Xv。n<=10^5 【题解】首先每个点的权值可以任意大,那么v的子树(不含v的部分)权值多少就无所谓了(因为缺的可以由v来补足),但是太大的话超过X
阅读全文
摘要:【题意】n个数字分成k段,每一段的价值是段内不同数字的个数,求最大价值。n<=35000,k<=50。 【算法】分治决策单调+主席树(可持久化线段树) 【题解】 f[i][j]表示前i天分成j段的最大价值。 f[i][j]=max(f[k][j-1]+work(k+1,i)),j-1<=k<i。 首
阅读全文