
动态规划
古宇hhh
学习中!!!!
展开
-
hdu 4539 郑厂长系列故事——排兵布阵(状压dp)
题目大意: 曼哈顿距离==2的点不能站人,分析方法同poj 1185 炮兵阵地;曼哈顿距离 == |x1-x2|+|y1-y2|#include#include#includeusing namespace std;int mp[1<<10];int st[1<<10];int nu[1<<10];int d[105][205][205];int n,m;bool原创 2018-01-30 18:23:20 · 323 阅读 · 0 评论 -
概率dp SGU - 495 Kids and Prizes
题意:n个礼物盒子,m个人去开盒子,每个盒子只有第一次被打开才能拿走里面的礼物。m个人拿走的礼物数量的期望值。题目分析:设d[i]表示第i个人拿到礼物的概率。结果显然是已知d[i]当我们需要处理d[i+1]时。当d[i+1] = (1-d[i])*d[i]+d[i]*(d[i]-1/n)1.当第i个人拿不到礼物概率为1-d[i],第i+1个人拿到礼物的概率等于d[i...原创 2018-10-16 09:19:06 · 141 阅读 · 0 评论 -
概率dp(入门)SPOJ - FAVDICE Favorite Dice
题目原意: 已知n面骰子,求期望值:n面全部掷出。#include <bits/stdc++.h>using namespace std;int main(){ int n; int T; scanf("%d",&T); while(T--){ cin>>n; double d[n];...原创 2018-10-15 21:00:16 · 231 阅读 · 0 评论 -
概率dp hdu 3853 LOOPS
题目大意:在n*m的地图中,每个点有三种情况;1.停留在原地概率为a。2.向右走一格,概率为b。3.向下走一格,概率为c。数据保证有解。每做一次决定需要消耗两颗仙丹,从1,1到n,m需要消耗仙丹的期望值。题目分析:到着dp一下,或者dfs。AC代码:#include<bits/stdc++.h>using namespace std;#de...原创 2018-10-18 10:58:34 · 153 阅读 · 0 评论 -
hdu 4035 Maze 树形dp + 期望值
题目大意:人需要逃离一棵树,每个节点有三种可能。1.回到1节点,概率为k[i];2.逃出树,概率为e[i];3.逃到下一个临近的节点。(1-k[i]-e[i])求逃离树的天数的期望值。难点:节点之间具有后续性。可以返回父亲节点。题目分析:(节选自kungbin博客)设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望。E[1]即为所求。 叶子结点...原创 2018-10-18 10:24:08 · 202 阅读 · 0 评论 -
Codeforce 106C Buns (完全背包)
题意: 现在有nkg的面,和m种馅,如果是只买面做的馒头,c0kg面,做一个d0价值的馒头。m种馅有a,b,c,d四种属性,a馅的量,b制作一个这种面包需要的馅的量,c是需要面的量,d是该种面包能卖多少钱。问最多能销售多少钱。分析: 贪心考虑第一时间否定。动态规划:考虑与结果相关的参数。面的质量i,使用了前j种馅,一共做了k个j馅。d(i,j,k)就是我们要的答案。状态转移: f...原创 2018-04-17 00:04:31 · 283 阅读 · 0 评论 -
hrbust 2372 小L的问题(矩阵优化-dp)
题意: 小L有1*2大小的矩形骨牌和3格大小的L型骨牌。求对于每一个2*n大小的棋盘,用这两种骨牌完全覆盖的方案数题解: 去掉3格的L型骨牌,是个经典的矩阵加速dp,加上后转移方程 dp[i] = dp[i – 1] + dp[i – 2] + 2 * (sum[i – 3]) sum[i] = sum[i – 1] + dp[i] 建一个3*3的矩阵加速即可#inc...原创 2018-03-27 17:44:47 · 353 阅读 · 0 评论 -
Educational Codeforces Round 39 (Rated for Div. 2) D. Timetable (背包)
题意: 一个周期有n天,每天有m节课,一个周期的时间可以逃课k次。问至少要在学校里待多久。(从早上去的第一节课到最后一节课,如果没有课就不去)分析: 每天有x节课,我们需要考虑旷课[0,x]天内的所有的情况的的最小值用g【i】记录。g【i】旷课i节课这天最少上多久第u天的的最短时间是d【u】【k】 (k是旷课的次数)d【u】【k】=min(d【u-1】【i】+g【j】)(i+j == ...原创 2018-03-08 20:20:23 · 163 阅读 · 0 评论 -
Codeforece 812 B 动态规划
题意:有一栋大楼n层,每层有m个房间,左右两边还有楼梯间。Staff 想去把整个大楼的等关掉,问他需要多少时间能做完。起始位置 左下角。问题分析:仔细看一下其实我们可以把除了亮灯的最高层以为每一层都分割成两个状态。一个是最后停留在左边的楼梯间d(Layer, 0);一个是最后停留在右边的楼梯间d(Layer, 1);仔细思考一下从 x层到x+1层的时候我们只需要判断四个状态://left 该层停留...原创 2018-02-12 23:56:16 · 287 阅读 · 0 评论 -
poj 1185 炮兵阵地 (状压)
问题分析: 本题与poj 3245相似,,进化版。具分析点击题号前进。pos 3254 状态转移方程 :d(i,statue_i) += d(i-1,statue_j)(statue_i ,statue_j状态互不影响)本题状态转移要多考虑一个维度。d(i,statue_i, statue_j) = max(d(i-1, staute_j, statue_k) )+Nu原创 2018-01-30 14:00:42 · 230 阅读 · 0 评论 -
poj 3254 Corn Fields (状压dp)
题意说明: n*m的方格中进行放牧,1代表可以放牧,0代表不可以放牧,两头牛不能在相邻的地方进行放牧。问一共有多少种方案。结果多1e8取膜。可以不进行放牧。问题分析:1.将01表示当前行的状态。mp【i】存储的就是我们要的状态。mp【i】=5 (101) 2.判断是否那种状态是可行状态 (st[i]存储可行状态):无相邻的1,通过位运算进行错1位,&运算判断原创 2018-01-30 12:20:40 · 183 阅读 · 0 评论 -
最优子结构 - 矩阵链乘 poj 1651 Multiplication Puzzle
Multiplication PuzzleTime Limit: 1000MS Memory Limit: 65536KTotal Submissions:11410 Accepted: 7075DescriptionThe multiplication puzzle is played with a row of cards, each containing a single positive原创 2018-01-17 12:13:51 · 304 阅读 · 0 评论 -
最优子结构 - 三角剖分 uva 1331 Minimax Triangulation
题意大概:给你n给点组成的多边形,连接对角线形成 n-2个三角形,问你最优策略使得 所形成的最大的三角形最小;思路分析:d(i,j)表示在点 i 到点 j 这一串点所构成的的多边形形成的最大的三角形最小;当 i + 2 == j 时 只有一个三角形可以返回面积double Area(int i,int j,int k){ return fabs((x[i]-x[j])*(y[i]-y[k原创 2018-01-18 21:51:48 · 274 阅读 · 0 评论 -
动态规划-第k优解 hdu 2639 Bone Collector II
题意大概: n个骨头,每个骨头有自己的价值和体积,给定空间 v 求 第k大的解决方案。问题分析: 对于求次优解、第 K 优解类的问题,如果相应的最优解问题能写出状态转移方程、用动态规划解决,那么求次优解往往可以相同的复杂度解决,第 K 优解则比求最优解的复杂度上多一个系数 K 。其基本思想是,将每个状态都表示成有序队列,将状态转移方程中的max / min转化成有序队列原创 2018-01-25 18:21:21 · 354 阅读 · 0 评论 -
codeforces 580D - Kefa and Dishes 状压dp - TSP
题目大意: 小A去饭店里吃饭有n道菜,小A需要吃m道才才能满足,每道菜都有自己的满意度,有k个联系。u v c 代表先吃u 紧接着吃v 会额外获得c的满意值。此题与poj3311类似。:TSP问题分析:统计所有状态中 1的数量等于m的最大d(statue,i)值。i代表当前在吃第几道菜,statue代表吃了多少菜。分析借鉴:poj3311#inclu原创 2018-01-31 14:24:12 · 255 阅读 · 0 评论 -
poj 3311 Hie with the Pie(状压dp —— TSP)
题目大意: 有n个店要去(1-n),现在配送人员在店里(0)要去所有的n个地点去送餐。给出送餐花费的时间表,来回的时间花费可能不同,求最小时间送完n个店。(送完餐记得回去。。)问题分析:1.可能直接去不是最近的。所以用Folyd处理一下距离。void Floyd(){ for(int k=0; k<=n; k++) for(int i=原创 2018-01-31 01:03:14 · 244 阅读 · 0 评论 -
ZOJ 3640 Help Me Escape 概率dp
题目大意:人需要逃出地洞,每个地洞有自己的守卫者。守护者的战力为c[i]。每天人会被随机的分配到一个地洞的出口前。当人的战力值f>c[i]时花费天即可逃出。否则,战力值加上c[i],天数加一,第二天随机出现在一个地洞口。问逃出去的天数的期望值。题目分析:分类讨论d[i]是武力值为i的时候逃出地洞需要天数的期望值。1.i> c[j] , d[i] +=...原创 2018-10-17 20:50:09 · 140 阅读 · 0 评论