bzoj 4712: 洪水】的更多相关文章

[权限题][https://www.lydsy.com/JudgeOnline/status.php?problem_id=4712&jresult=4] 这道动态\(dp\)终于不是独立集/覆盖集了 我们来看看暴力转移 设\(dp_x\)表示把\(x\)子树内部全部切断的最小花费 显然有 \[ dp_x=min(a_x,\sum_{(x,v)\in e}dp_v ) \] 于是我们可以考虑把所有轻儿子的\(dp_v\)存下来 之后就能搞了 #include<algorithm> #i…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4712 因为作为动态DP练习而找到,所以就用动态DP做了,也没管那种二分的方法. 感觉理解似乎加深了. 果然初始权值也都是非负的. 所以 dp[cr] 表示当前子树与自己的叶子都断开了的最小代价,则 dp[cr]=min{ sigma dp[v] , w[cr] }(v是cr的直接孩子). 但这样的话,修改的时候需要把自己到根的路径都走一遍.不过查询是O(1)的,所以考虑分配一下. 走到根的…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4712 设 f[x] = min(∑f[u] , a[x]),ls = ∑f[lson] 矩阵是这样的: ls, a[x] 0, 0 所以假如后面乘一个 f[u], 0 0, 0 就得到了 f[x]: 注意,因为定义结构体时把数组都赋成 inf 了,所以后面要用 0 时必须专门赋值成 0: 查询时不是从重链顶开始的,所以不用 get,直接 query(x,ed[top[x]]): 最后 f[…
Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) #define maxn 200001 #define inf 1000000000 #define lson (now<<1) #define rson ((now<<1)|1) using namespace std; char ask[10]; int hd[maxn],to[ma…
题目大意:略 题目传送门 数据结构好题,但据说直接上动态DP会容易处理不少,然而蒟蒻不会.一氧化碳大爷说还有一个$log$的做法,然而我只会$log^{2}$的.. 考虑静态时如何处理,设$f[x]$表示堵住$x$这棵子树的最小花费,$g[x]$表示$x$所有子节点的$f[x]$总和,$a[x]$表示x点的权值 容易得到方程$f[x]=min(g[x],a[x])$ 那么如果点权是动态的呢? 本题中的修改操作只会把点权增加 而真正对答案产生影响的,是某些节点的$f$值取的是$g$值还是$a$值…
把之前写的版本改了一下,这个版本的更好理解一些. 特地在一个链的最底端特判了一下. code: #include <bits/stdc++.h> #define N 200005 #define ll long long #define inf 10000000005 #define lson p[x].ch[0] #define rson p[x].ch[1] #define setIO(s) freopen(s".in","r",stdin) , f…
国际惯例的题面:看起来很神的样子......如果我说这是动态DP的板子题你敢信?基于链分治的动态DP?说人话,就是树链剖分线段树维护DP.既然是DP,那就先得有转移方程.我们令f[i]表示让i子树中的叶子节点全部与根不联通,所需要的最小代价,v[i]为输入的点权.显然f[i]=min(v[i],sigma(f[soni])),边界条件是,如果i是叶子节点,则f[i]=v[i].我们需要用链分治去维护这个DP,所以要把DP拆成重链和轻链独立的形式.我们还是用f[i]表示让i子树中的叶子节点全部与根…
题意 题目描述 小Q是一个热爱学习的人,他经常去维基百科学习计算机科学. 就在刚才,小Q认真地学习了一系列位运算符,其中按位异或的运算符\(\oplus\)对他影响很大.按位异或的运算符是双目运算符.按位异或具有交换律,即\(i \oplus j = j \oplus i\). 他发现,按位异或可以理解成被运算的数字的二进制位对应位如果相同,则结果的该位置为\(0\),否则为\(1\),例如:\(1(01) \oplus 2(10) = 3(11)\). 他还发现,按位异或可以理解成参与运算的数…
BZOJ 1104 [POI2007]洪水 描述 AKD 市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD 市全被水淹没了.Blue Mary,AKD 市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商议之后,会议决定,调集若干巨型抽水机,将它们放在某些被水淹的区域,而后抽干洪水. 你手头有一张 AKD 市的地图.这张地图是边长为 mn 的矩形,被划分为 mn个 11 的小正方形.对于每个小正方形,地图上已经标注了它的海拔高度以及它是否是 AKD 市的一个组成部分.…
题意 给一个\(n * m(1 \le n, m \le 1000)\)的矩阵,如果\(a_{i, j}\)为正表示城市.\(|a_{i, j}|(|a_{i, j}| \le 1000)\)是格子\((i, j)\)的海拔.现在需要放最少的抽水机,使得把所有城市的水都抽干.自行脑部抽水机是怎么工作的. 分析 容易发现: 存在最优解使得抽水机都放在城市中. 一定是从海拔低的城市开始放. 题解 根据传递性,在\((i, j)\)放了抽水机,如果上下左右有海拔比自己高的(或等于),则那个格子也相当于…