随笔分类 -  動態規劃dp

摘要:设$lt[i][j]$为向左最远到达的点,$rt$同理,$ht[i][j]$为向上最远扩展多高 一开始先设初值为自己位置,高度为1 预处理每个点左右扩展的范围,扩展条件根据题目决定 然后可以dp: lt[i][j]=max(lt[i][j],lt[i-1][j]); rt[i][j]=min(rt[ 阅读全文
posted @ 2019-09-17 18:57 羊肉汤泡煎饼 阅读(169) 评论(0) 推荐(0)
摘要:需要设计一个不用记录哪个人死了的状态,其实人的编号在死人以后就和位置无关了,所以不如记录每个位置的概率 设$f[i][j]$为共$i$个人,从第一个人做庄向后第$j$个人的概率,转移的话无非是看子问题,庄选某张牌杀掉人以后其实就只剩下$i-1$个人了,此时每个点的胜率加上对应位置的胜率即可, 阅读全文
posted @ 2019-09-12 17:58 羊肉汤泡煎饼 阅读(136) 评论(0) 推荐(0)
摘要:前言:不说废话,野狼disco牛逼就完事了(网易云和b站绝对共享cookie 这题喵啊.....好多解法慢慢写吧... 1.一种优秀且优雅的组合数解法 首先发现一个性质,先下降和先上升序列一样多,只要把每个点取反就可以,所以我们可以只计算一种 例如我们计算先下降的序列,考虑往后加入$i$,那么一定是 阅读全文
posted @ 2019-09-12 10:46 羊肉汤泡煎饼 阅读(151) 评论(0) 推荐(0)
摘要:此题似乎有两种写法,一种是一维表示步数,一维表示边,一种是两维都表示边,类似floyd,这里是第二种 这题和裸矩阵floyd唯一的区别就是不能从上一次来的边走回去, 如果还像原来一样用点表示状态就信息不足,暂且不考虑矩快优化dp的问题,要想知道上回走的那条边不如干脆记录上回走的哪条边,这样不仅知道从 阅读全文
posted @ 2019-09-11 20:31 羊肉汤泡煎饼 阅读(194) 评论(0) 推荐(0)
摘要:#include<bits/stdc++.h> #define ll long long using namespace std; ll a,b; int num[15],len;//num表示每位数字上限 ll f[15][15]; ll dfs(int pos,int now,int number,bool lmt,bool led){ //当前位置,当前答案,当前正统计的数字,是否达到数字上 阅读全文
posted @ 2019-09-11 17:52 羊肉汤泡煎饼 阅读(234) 评论(0) 推荐(0)
摘要:简单数位dp 数位dp最重要的还是要理解模板的原理,理解数位dp的原理,理解题目的做法,套模板不一定能解决所有问题,反而大概率会有一些细节出错而无法想到 阅读全文
posted @ 2019-09-11 17:51 羊肉汤泡煎饼 阅读(140) 评论(0) 推荐(0)
摘要:看的shadowice1984的题解,写的确实很棒,大概挑一点摘出来吧 这里想讲一个关于概率题的小技巧,就是关于如何求某个事件发生的概率PP,事实上大家也清楚,除了一些特殊的近似算法之外,我们在程序中计算概率的方法无非就是加减乘除四则运算而已……而减法和除法又是加法和乘法的逆。 而在概率角度上,应该 阅读全文
posted @ 2019-09-10 19:31 羊肉汤泡煎饼 阅读(158) 评论(0) 推荐(1)
摘要:在DAG图的部分分下很显然是个dp,拓扑排序dp即可搞定,在存在环的情况下,不知道为什么就要用spfa来dp 主要考察对spfa理解是否深刻,其实spfa的过程就是个dp的过程,尤其$if(d[y]>d[x]+w)d[y]=d[x]+w$非常像一个dp的式子, 我们每次都拿有可能更新其他点的点去尝试 阅读全文
posted @ 2019-09-09 21:06 羊肉汤泡煎饼 阅读(192) 评论(0) 推荐(0)
摘要:模板来自:https://www.cnblogs.com/Winniechen/p/9862745.html 题意:将数列a划分成k段,使得每段内部逆序对最少$(n<=40000,k<=10,a[i]<=n)$ dp式子比较显然,设$f[i][j]$为前$i$个数划分成$j$段的答案,$f[i][j 阅读全文
posted @ 2019-09-09 17:11 羊肉汤泡煎饼 阅读(235) 评论(0) 推荐(0)
摘要:已知一个长度为n的序列a1,a2,...,an。 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j)) 每个点的$p=max(a[j]-a[i]+\sqrt{|i-j|}$,可以想到dp,$f[i]=max(a[j]-a[i] 阅读全文
posted @ 2019-09-09 08:23 羊肉汤泡煎饼 阅读(271) 评论(0) 推荐(0)
摘要:这题和最短路计数有很大关系,再加上k只有50,容易让人想到dp, 先设计状态$f[i][j]$表示到$i$点比最短路多走了$j$长度的方案数,接下来思考转移 考虑一条边$u->v$边权为$w$,从$f[u][j]$能转移到$f[v]$的哪个状态? 既然是走到$v$比$dis[v]$多走多少,就比较显 阅读全文
posted @ 2019-09-06 21:03 羊肉汤泡煎饼 阅读(188) 评论(0) 推荐(0)
摘要:我调炸了(Fword 面向数据编程*1 另外一道双倍经验题相同代码可过 简单的树形dp,和dp $f[i][0/1][0/1]$为到$i$选/不选当前,选/不选1号的答案 也可以两次树形dp,一次强制断环上一条边,一次强制连接 阅读全文
posted @ 2019-09-04 18:59 羊肉汤泡煎饼 阅读(143) 评论(0) 推荐(0)
摘要:调了一万年......先是==写成=,然后快读出锅,手写队列以为出锅改成stl结果发现stl才是真正出锅....改回手写队列才a 抄题解都抄了好久好久...(写法不唯一... 然后BZOJ RE.........WDNMD 思路,找环,子树求直径,单调队列dp,比较好理解,但是写起来有点麻烦 这里用 阅读全文
posted @ 2019-09-04 15:27 羊肉汤泡煎饼 阅读(302) 评论(0) 推荐(0)
摘要:过程: $f[i]=min(f[j]+\sum_{k=j+1}^{i}p_{k}*(x_{i}-x_{k}))+c[i]$ 令$sum[i]=\sum_{j=1}^{i}p_{k},sumx[i]=\sum_{j=1}^{i}p_{k}*x_{k}$ $f[i]=min(f[j]+(sum[i]-s 阅读全文
posted @ 2019-08-04 20:34 羊肉汤泡煎饼 阅读(146) 评论(0) 推荐(0)
摘要:设$f[i]$表示装$i$个玩具用的最小花费, 原转移方程:$f[i]=min(f[j]+(sum[i]-sum[j]+i-(j+1)+L)^2$ 把与$i$和$j$相关的放到一起:$f[i]=min(f[j]+(sum[i]+i-(sum[j]+j+L+1))^2$ 不断化简:设$a[i]=sum 阅读全文
posted @ 2019-08-04 15:28 羊肉汤泡煎饼 阅读(116) 评论(0) 推荐(0)
摘要:最基本的数位dp, 洛谷日报,比较易懂:https://www.luogu.org/blog/virus2017/shuweidp 传参:当前位数pos,记录当前数字出现次数now,当前查找的数字number,是否存在前导0 led,当前是否为枚举上界(最高位)lmt,前面加t的为临时变量 下一位是 阅读全文
posted @ 2019-07-19 23:05 羊肉汤泡煎饼 阅读(151) 评论(0) 推荐(0)
摘要:关于如何处理分数形式一个普适的做法是开个结构体记录分子分母,重载运算符做加减法, 但是在数据范围小的情况下可以假设开始时有$2^n$个小球下落,这样可以避免处理分数 阅读全文
posted @ 2019-07-18 13:48 羊肉汤泡煎饼 阅读(173) 评论(0) 推荐(0)
摘要:树形dp/记忆化搜索 首先可以看出树形dp,因为第一个问题并不需要知道子树的样子, 然而第二个输出前序遍历,必须知道每个子树的根节点,需要在树形dp过程中记录,递归输出 阅读全文
posted @ 2019-06-13 21:07 羊肉汤泡煎饼 阅读(162) 评论(0) 推荐(0)
摘要:2. 小x游世界树 (yggdrasi.pas/c/cpp) 【问题描述】 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当他想前往阿瓦隆时发现那里只有圣诞节时才能到达,然而现在已经春天了,不甘心的他将自己的目的地改成了世界 阅读全文
posted @ 2019-05-04 13:29 羊肉汤泡煎饼 阅读(385) 评论(0) 推荐(0)
摘要:對於不嚴格單調的我們可以n^2DP,首先每個數一定在原數組中出現過,如果沒出現過不如減小到出現過的那個花費更小,效果相同 所以f[i][j]表示把i改到離散化后j的最小代價,每次維護前一狀態最小值mn再加上這次的值就是答案 圖像沒看懂:https://blog.csdn.net/lycheng121 阅读全文
posted @ 2019-05-01 13:39 羊肉汤泡煎饼 阅读(228) 评论(0) 推荐(0)