
区间DP
yyy_3y
这个作者很懒,什么都没留下…
展开
-
hdu_5151_Sit sit sit(区间DP)
传送门题意:有n张椅子,n个人,所有人都可以按照任意顺序坐在任意一张椅子上,但是满足这三种情况的椅子不会有人坐: 1.椅子上有左右两张相邻的椅子。 2.左右相邻的椅子不是空的。 3.左右相邻的椅子颜色不同。 如果当前学生找不到椅子坐下,他将会离开。问一共有几种坐法?思路:区间dp+组合数知识。dp[i][j]代表从i-j的总方法数。 枚举k为最后坐下的同学。 假如k是头 ...原创 2018-03-06 19:47:54 · 288 阅读 · 0 评论 -
hdu_5396_Ex_pression(区间DP)
传送门题意:给你一个n然后是n个数。 然后是n-1个操作符,操作符是插入在两个数字之间的。 问你最后每种不同的组合求和mod1e9+7。 和 hdu_5151 这道题有些相似。 都是以组合数的方式进行处理。乘法: t=(dp[i][k]*dp[k+1][j])%mod; 加法: t=(dp[i][k]*A[j-k-1]+dp[k+1][j]*A[k-i])%mod; 减法:...原创 2018-03-06 22:01:10 · 172 阅读 · 0 评论 -
hdu_5900_QSC and Master(区间DP)
传送门题意:有n个数,第一行是a[i]的大小,第二行是b[i]的价值,如果a[i]中相邻两个数的gcd>1那么就可以加上这两个人数相应的价值。 思路:数位dp。 注意点: LL。维护前缀和。#include<bits/stdc++.h>#define debug(a) cout << #a << " " << a <<..原创 2018-02-27 16:04:25 · 133 阅读 · 0 评论 -
hdu_5693_D Game(区间DP)
D Game思路: 1.f[i][j]代表从i到j的区间是否可以删除,能删除就是1。 2.只需要考虑2个数字的情况和三个数字的。因为任何一个大于等于2的数可以由这两种情况构成。 3.dp[j]表示从 1-j最多能删掉最多多少个。#include<bits/stdc++.h>using namespace std;const int N = 307;int n,m...原创 2018-03-04 21:02:14 · 171 阅读 · 0 评论 -
hdu_5115_Dire Wolf(区间DP)
传送门题意:有一排狼,每只狼有一个伤害A,还有一个伤害B。每一狼的伤害为A加上他相邻两只狼的B(类似buff)。现在问如何杀掉一排狼且受到的伤害最小。思路:非常裸的区间dp,dp[i][j]为消灭i到j只狼的最小代价,枚举k作为最后一只被杀死的狼。 可列出转移方程:dp[i][j]=min(dp[i][j],dp[i][k-1]+dp[k+1][j]+a[k]+b[j+1]+b[i-1]...原创 2018-03-04 22:36:41 · 270 阅读 · 0 评论