luoguP5024 保卫王国】的更多相关文章

题目大意: emmmmm 题解: QAQ #include <cstdio> #include <cstring> #include <iostream> using namespace std; #define ll long long #define ri register int #define rep(io, st, ed) for(ri io = st; io <= ed; io ++) #define drep(io, ed, st) for(ri i…
题目链接 问题分析 其实是比较明显的动态DP. 懒于再推一遍式子,直接用 最小权点覆盖=全集-最大权独立集,然后就和这道题一样了.题解可以看这里. 然后必须选或者不选的话,就直接把相应的点权变成\(-\infty\)或\(\infty\)就好了.如果是必须选,最后答案里不要忘了加回原来的值. 参考程序 #include <bits/stdc++.h> using namespace std; const long long Maxn = 100010; const long long INF…
最小权覆盖集 = 全集 - 最大权独立集 强制取点.不取点可以使用把权值改成正无穷或负无穷实现 接下来就是经典的"动态最大权独立集"了 O(nlogn). 这不是我说的,是immortalCO大佬说的 于是我调了一万年极值,终在\(\frac{LLONG\_MAX}{3}\)时\(11s\)卡过... 知道最小权覆盖集 = 全集 - 最大权独立集,就是模板\(DDP\)了 #include <cstdio> #include <iostream> #includ…
保卫王国 电脑卡懒得把题面挪过来了. 朴素 \[ dp_{i,0}=\sum dp_{s,1}\\ dp_{i,1}=\sum \min(dp_{s,0},dp_{s,1})+p_i \] 然后直接动态dp就行了 我发现lct是最好写的,反正比树剖好写,还比她快 没倍增快,但是看起来倍增挺难写的... Code: #include <cstdio> #include <algorithm> #define ll long long const ll inf=1ll<<4…
题意 题目描述 Z 国有\(n\)座城市,\(n - 1\)条双向道路,每条双向道路连接两座城市,且任意两座城市 都能通过若干条道路相互到达. Z 国的国防部长小 Z 要在城市中驻扎军队.驻扎军队需要满足如下几个条件: 一座城市可以驻扎一支军队,也可以不驻扎军队. 由道路直接连接的两座城市中至少要有一座城市驻扎军队. 在城市里驻扎军队会产生花费,在编号为i的城市中驻扎军队的花费是\(p_i\). 小 Z 很快就规划出了一种驻扎军队的方案,使总花费最小.但是国王又给小 Z 提出 了\(m\)个要求…
「NOIP2018保卫王国」 题目描述 有一棵 \(n\) 个点, 点有点权 \(a_i\),\(m\) 组询问, 每次求钦点两个节点必须选或者必须不选后的树上最小点覆盖. \(1 \leq n, m \leq 10^5\) 解题思路 : 这个题唯一的意义恐怕是普及了一个还不能算太普及的科技,至少我没有时间去实现这个东西.当然 \(\text{nqiiii}\) 大爷考场上写了标算没写这个科技就过了是真的强.(不愧是机房里仅次于 \(\text{AK}\)王\(\text{zzd}\) 的男人)…
Uoj 441 保卫王国 动态 \(dp\) .今天才来写这个题. 设 \(f[u][0/1]\) 表示子树 \(u\) 中不选/选 \(u\) 时的最小权值和,显然有:\(f[u][0]=\sum f[v][1] ,f[u][1]=w[u]+\sum \min(f[v][0],f[v][1])​\) . 现在要资瓷修改 \(x\) 的点权 \(w[x]\) ,容易发现修改后只会影响 \(x\) 到根节点这一条链上的 \(f\) 值.若暴力更新这一条链,在树深度大时,时间复杂度仍是 \(O(nm…
\(\mathcal{NOIP2018}\) 保卫王国 - 竞赛题解 按某一个炒鸡dalao名曰 taotao 的话说: \(\ \ \ \ \ \ \ \ \ "一道sb倍增题"\) 顺便提一下他的[题解](因为按照这个思路写的,所以代码看起来也差不多) 因为比较复(胡)杂(炸),可能需要理解久一点 『题目』 参见 [洛谷 P5024] 『解析』 一.初步思考 如果不考虑多次询问的话,显然可以进行一次简单的树形DP,特殊判断一下当前的点(也就是城市)能不能选(放军队)就行了~ 但是显…
[NOIP2018TG]保卫王国 BZOJ luogu 当动态dp模板题写的,(全集-最大点权独立集)不能放军队的+inf,必须放军队-inf即可 注意矩阵乘法的顺序问题 #define ll long long #define ls x<<1,l,mid #define rs x<<1|1,mid+1,r #include<bits/stdc++.h> using namespace std; const int _=1e5+5,inf=1e9; int re(){…
保卫王国 Description Z 国有n座城市,n - 1条双向道路,每条双向道路连接两座城市,且任意两座城市 都能通过若干条道路相互到达. Z 国的国防部长小 Z 要在城市中驻扎军队.驻扎军队需要满足如下几个条件: 一座城市可以驻扎一支军队,也可以不驻扎军队. 由道路直接连接的两座城市中至少要有一座城市驻扎军队. 在城市里驻扎军队会产生花费,在编号为i的城市中驻扎军队的花费是pipi. 小 Z 很快就规划出了一种驻扎军队的方案,使总花费最小.但是国王又给小 Z 提出 了m个要求,每个要求规…