随笔分类 - 动态规划
摘要:你发现只会改变一个位置,所以可以直接进行dp 具体转移的话用 CDQ 分治转移就好了~ #include <bits/stdc++.h> #define N 100006 #define setIO(s) freopen(s".in","r",stdin) using namespace std;
阅读全文
摘要:不是很难想,但是细节巨多 开始一个地方想错了,然后...... code: #include <bits/stdc++.h> #define N 2000006 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using
阅读全文
摘要:这个题非常巧妙啊~
阅读全文
摘要:比较简单的状压 dp,令 $f[S][i]$ 表示已经经过的点集为 $S$,且最后一个访问的位置为 $i$ 的方案数. 然后随便转移一下就可以了,可以用 $lowbit$ 来优化一下枚举. code: #include <bits/stdc++.h> #define N 21 #define LL
阅读全文
摘要:code: #include <bits/stdc++.h> #define N 1005 using namespace std; void setIO(string s) { string in=s+".in"; string out=s+".out"; freopen(in.c_str(),"
阅读全文
摘要:题意:给定一个序列,每个位置有 $t_{i},b_{i}$ 两个属性,分别代表该点的权值,和 $i$ 后面只允许不超过 $i+b_{i}$ 在 $i$ 前打饭. 而每一次 $i$ 打饭的代价为 $上一个打饭位置t_{上一个打饭位置}$ ^ $t_{i}$ 求一种分配打饭的先后顺序,使得总代价最小.
阅读全文
摘要:题意:有一个栈,随机插入 $n$ 次 $0$/$1$ 如果栈顶是 $1$,然后插入 $0$,则将这两个元素都弹出,否则,插入栈顶. 求:$n$ 次操作后栈中期望的元素个数. 我们发现,按照上述弹栈方式进行,栈中元素一定是由若干个连续 $0$ 加上若干个连续 $1$ 组成. 而 $1$ 所在的联通块还
阅读全文
摘要:有一棵树,共有 $N$ 个节点,他会使用下列 $DFS$ 算法对该树进行遍历: starting_time是一个容量为n的数组current_time = 0dfs(v): current_time =current_time+1 starting_time[v] = current_time 将c
阅读全文
摘要:题意:给定一颗树,树上每个点通电概率为 $q[i]$%,每条边通电的概率为 $p[i]$%,求期望充入电的点的个数. 期望在任何时候都具有线性性,所以可以分别求每个点通电的概率(这种情况下期望=概率 $\times 1$ )然后累加. 然而,直接求通电的概率不是很好求,所以可以求不通电的概率,然后
阅读全文
摘要:题意: $mhy$ 住在一棵有 $n$ 个点的树的 $1$ 号结点上,每个结点上都有一个妹子。 $mhy$ 从自己家出发,去给每一个妹子都送一台电脑,每个妹子拿到电脑后就会开始安装 $zhx$ 牌杀毒软件,第 $i$ 个妹子安装时间为 $Ci$。 树上的每条边 $mhy$ 能且仅能走两次,每次耗费
阅读全文
摘要:易得方程 $f[i]=max(f[j])+v[i]$,条件是 $t[i]<t[j]$ 且 $2t[j]-x[j]<=2t[i]-x[i]$ 且 $2t[j]+x[j]<=2t[i]+x[i]$ 一共有 3 个条件,但是你发现如果满足后面两个条件,自然满足第一个条件. 所以可以将问题转化为一个二位偏序
阅读全文
摘要:给定 $n<=10$ 个 $1$~$n$ 的排列,求这些排列的 $LCS$. 考虑两个排列怎么做:以第一个序列为基准,将第二个序列的元素按照该元素在第一个序列中出现位置重新编号. 然后,求一个 $LIS$ 即可. 现在是多个串,不妨也按照这个方法来做: 以第一个串为基准,其余串重新编号成该元素在第一
阅读全文
摘要:期望dp水题~ 你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环) 然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数. 用记忆化搜索转移就行了. code:
阅读全文
摘要:题意:给定 $n$ 个灯的初始开/关状态,每次可以随机选择一个点进行操作,当操作第 $i$ 个开关时,所有 $i$ 的约数的灯的状态都会改变. 当操作到局面最少小于等于 $k$ 步就能将所有灯灭掉时就不用随机,而直接选取最优方案. 求:让所有灯全部灭掉的期望操作次数. 加入给定一个局面,那么最优解一
阅读全文
摘要:给一颗树,$1$ 号节点已经被染黑,其余是白的,两个人轮流操作,一开始 $B$ 在 $1$ 号节点,$A$ 选择 $k$ 个点染黑,然后 $B$ 走一步,如果 $B$ 能走到 $A$ 没染的节点则 $B$ 胜,否则当 $A$ 染完全部的点时,$A$ 胜。求能让 $A$ 获胜的最小的 $k$ 我们发现
阅读全文
摘要:题意:给定 $n$ 个括号序,让你从中选取一些括号序按照任意顺序拼接,最终生成一个合法的括号序列,求这个合法序列长度最大值. 题解:假设括号序列相对顺序固定,而我们要做的只是判断选还是不选的话可以转化为一个简单的背包问题: 令 $f[i][j]$ 表示考虑前 $i$ 个括号序,左括号比右括号多 $j
阅读全文
摘要:开始的时候数据范围算错了~ 我以为整个序列 2 和 5 的个数都不超过 70 ~ 一个非常水的 dp code:
阅读全文
摘要:考试 T2,没想到真的就是一个大爆搜啊~ 搜索时几个剪枝: 1.剩余可用颜色要大于等于剩余步数 2.颜色从没用过的里找,然后用二进制状压存储. 3. 最重要的一个剪枝:如果一个颜色在之前序列中未出现过,且在之后的位置也不会强制出现,则所有这种情况的贡献都是相同的,只需算第一次的贡献,然后后面的依次累
阅读全文
摘要:对于每一个数字拆位,然后维护一个大小为 30 左右的桶即可. code:
阅读全文
摘要:状态的定义挺奇特的~ 发现最终每一个物品一定都会被选走. 令 $f[i][0/1]$ 表示 $a[i]$ 在 $a[i-1]$ 前/后选时 $1$~$(i-1)$ 的最优解. 因为一个数字的价值只由其相邻两边决定~ code:
阅读全文

浙公网安备 33010602011771号