—————动态规划—————
文章平均质量分 56
everlasting__
'-'
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj 2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
→题目链接← 就是最经典的树形dp 参考 没有上司的舞会 #include #include #include #include #define MAXN 50050 using namespace std; int n; int dp[MAXN][2]; bool f[MAXN]; vectorv[MAXN]; void dfs(int x){ dp[x][1]=1原创 2017-07-23 21:22:58 · 421 阅读 · 0 评论 -
bzoj 1270: [BeijingWc2008]雷涛的小猫 dp
→题目链接← 一看到题就可以想到是动态规划 首先不作任何优化的dp时间复杂度显然是n^3的 dp[i][j]表示第i棵树,高度为j时最多可以吃到多少个柿子 num[i][j]表示第i棵树,高度为j的位置上有几个柿子 显然dp[i][j]=max(dp[i][j+1]+num[i][j] , dp[1~n][j+delta]+num[i][j]) 但是n^3是过不了的 我们发现原创 2017-08-17 16:15:50 · 319 阅读 · 0 评论 -
bzoj 2748: [HAOI2012]音量调节 dp
→题目链接← 很水的一道题 如果第i首歌时音量为j是可行的,那么dp[i][j]=true 最初dp[0][beginLevel]=true; 之后每次暴力扫上一次的状态,转移就好 代码: #include #include #include #include #include #include #define ll long long #define inf 10原创 2017-08-18 13:48:12 · 287 阅读 · 0 评论 -
bzoj 1649: [Usaco2006 Dec]Cow Roller Coaster 背包dp
→题目链接← dp[i][j]表示铁轨长度为i,花费为j时有趣指数最大值 代码: #include #include #include #include #include #include #define inf 999999999 #define ll long long using namespace std; struct node{ int s,e,w,c; }a[1原创 2017-08-15 10:06:49 · 308 阅读 · 0 评论 -
bzoj 3366: [Usaco2004 Feb]Breeding 奶牛饲育
特别鸣谢+膜拜ljss →题目链接← 题目大意就是有多少种不同的方案能乘出n 把所有的约数都暴力地找出来,然后dp[i]表示n=a[i]时有多少种方法可以得到这个数 显然的是如果a[i]%a[j]==0那么dp[i]+=dp[j] 初始时dp[i]都为1 最后那个dp就是答案 代码: #include #include #include using nam原创 2017-08-24 11:04:21 · 537 阅读 · 0 评论 -
bzoj 3359: [Usaco2004 Jan]矩形
→题目链接← 先令所有的矩形的x,y都是x 再以x为第一关键字,y为第二关键字,从小到大排序 然后就变成了找一个二维的最长上升子序列 n *注意两个矩形全等不算包含 代码: #include #include #include #include #include using namespace std; struct node{ int x,y; friend原创 2017-09-28 13:50:14 · 304 阅读 · 0 评论 -
bzoj 1827: [Usaco2010 Mar]gather 奶牛大集会
→题目链接← 【想说的话】 没有什么想说的=.= 周末没什么事不刷题感觉不太好 【题解】 两遍dfs(树形dp) 将点1当作根 第一遍dfs计算出每个点子节点总数,还有将它作为集会地点时它的子树中的点满足条件需要的代价 第二遍计算出答案,点1的答案就是dfs1时处理出的代价,剩下的点的答案就对于它与它父亲节点的那条边计算一下就好 具体看代码吧 【代码】原创 2017-10-29 22:18:00 · 300 阅读 · 0 评论 -
bzoj 1925: [Sdoi2010]地精部落
→题目链接← 【题解】 a[ 0 ][ 0 ]=1; a[ i ][ j ]=a[ i ][ j-1 ]+a[ i-1 ][ i-j ]; (i从1~n j从1~i) ans=a[ n ][ n ]*2; 中间%一%就好 【代码】 #include #define ll long long using namespace std; int n,mod; ll原创 2017-10-26 11:34:40 · 254 阅读 · 0 评论
分享