DP那么难根本写不了
文章平均质量分 83
Onozuka_Komachi
呃?
展开
-
告别(是题
题目描述给两个长度为nn的排列,从第一个排列开始,每次操作随机确定一个三元组(i,j,k)(i,j,k), 然后轮换它们的顺序,即A[i]=A[j],A[j]=A[k],A[k]=A[i]A[i]=A[j],A[j]=A[k],A[k]=A[i] 求在mm次操作内得到第二个排列的概率,用p∗q−1 mod 998244353p*q^{-1} \ mod \ 998244353表示 n≤14n原创 2017-10-08 11:25:20 · 470 阅读 · 2 评论 -
DP
某些比较烦的DP题。 实际却都是在瞎搞,正经的DP题没有几个。T1 Parenthese sequence然后这题我是贪心过的。 把可以不用问号匹配的直接用栈匹配掉。 然后贪心地用问号去匹配那些未被匹配的。 然后看最后剩下的问号是否在2个以上。代码根本找不到类似这种的写法= =#include<bits/stdc++.h>using namespace std;#define Komach原创 2017-10-16 15:55:19 · 453 阅读 · 2 评论 -
区间DP
另一个专题。T1 You Are the One将栈的状态作为一棵树来看。 那么每次弹出的操作就是对于当前最左侧的这个元素来说的。 枚举其弹出的时间。 前缀和处理在其之后弹出的元素需要加上的值。 复杂度为O(Tn3)O(Tn^3)代码#include<bits/stdc++.h>using namespace std;#define Komachi is retarded#define原创 2017-10-28 11:08:08 · 294 阅读 · 0 评论 -
Probability
一些比较诡异的关于概率的DPT1 Infinite monkey theorem呃,可以KMP求出Fail的位置。 但是懒得那么做..直接暴力O(nlen2)O(nlen^2)匹配求出矩阵。 然后矩阵乘或者直接求都可以了。代码这题调很久的一个严重原因就是不会输出‘%’ ..要用两个‘%%’或是‘\%’才行。#include<bits/stdc++.h>using namespace std;原创 2017-10-26 21:02:43 · 340 阅读 · 0 评论 -
计数DP
T1 NS某道没做出来的题的加强版。 然后这个序列要构造出来, 定义Fi,jF_{i,j}为长度为ii以jj结尾的符合要求的序列个数。 发现将整个序列大于等于某个数的一部分增加1, 是仍然符合这个序列之前的要求的, 所以我们可以写一个O(n3)O(n^3)的DP, 然后差分优化。代码#include<bits/stdc++.h>using namespace std;#define K原创 2017-10-31 14:55:02 · 391 阅读 · 0 评论 -
期望DP
联赛前继续刷DP,RTT1 M期望DP推公式的一个套路题。 定义FiF_i为从ii点开始到逃脱的期望步数。 那么可得 Fi=ki∗(1+F1)+0∗ei+1Degi∑(1+Fj)((i,j)∈E)F_i=k_i*(1+F_1)+0*e_i+\frac{1}{Deg_i}\sum(1+F_j)((i,j)\in E) Fi=1+ki∗F1+1Degi∑FjF_i=1+k_i*F_1+\frac原创 2017-10-31 13:54:32 · 551 阅读 · 0 评论