最小监视覆盖,即选中费用最小的i个点来选中一些边,这些边把所有的点覆盖。

#include <cstdio>
using namespace std;#define MAXV    1505
#define MAXE    (MAXV - 1)
int Vefw[MAXE], Veh[MAXV], Vet[MAXE], Vc[MAXV], Veptr;
int dp[MAXV][3],dp2[MAXV];#define min(a,b) ((a)<(b)?(a):(b))#define addedge(s,t)    do{\Vefw[Veptr] = Veh[s], Vet[Veptr] = t;    \Veh[s] = ++Veptr;}while(0)void solve(int s)
{dp[s][2] = 0, dp[s][1] = Vc[s];for(int e = Veh[s]; e; e = Vefw[e]) {int t = Vet[--e];solve(t);dp[s][1] += min(min(dp[t][0], dp[t][1]), dp[t][2]);dp[s][2] += min(dp[t][0], dp[t][1]);}int k;dp2[k=s] = 0x3f3f3f3f;for(int e1 = Veh[s]; e1; e1 = Vefw[e1]) {int t1 = Vet[--e1];dp2[t1] = dp[t1][1];for(int e2 = Veh[s]; e2; e2 = Vefw[e2]) {int t2 = Vet[--e2];if (t2 != t1) dp2[t1] += min(dp[t2][0], dp[t2][1]);}if (dp2[k] > dp2[t1]) k = t1;}dp[s][0] = dp2[k];
}int N;int main(void)
{
//    freopen("sdoi2006_guard.txt", "r", stdin);scanf("%d", &N);int root = 0;for(int i=0; i<N; ++i) {int s, k, c;scanf("%d%d%d", &s, &k, &c);Vc[--s] = k;while(c) {int t;scanf("%d", &t); --t;if (t == root) root = s;addedge(s, t);--c;}}solve(root);printf("%d\n", min(dp[root][0], dp[root][1]));return 0;
}

1046
Accepted
988
0
C++ 1421 B 2014-05-20 14:36:41

转载于:https://www.cnblogs.com/e0e1e/p/sdoi2006_guard.html

SDOI 2006 - 保安站岗相关推荐

  1. [SDOI2006] 保安站岗

    题目链接 第一遍不知道为什么就爆零了-- 第二遍改了一下策略,思路没变,结果不知道为什么就 A 了??? 树形 DP 经典问题:选择最少点以覆盖树上所有点(边). 对于本题,设 dp[i][0/1][ ...

  2. [SDOI2006]保安站岗 树dp

    要记录三种状态: 1.被子节点覆盖 2.等待父节点覆盖 3.建立覆盖节点 然后转移就好了,有一点麻烦的就是被子节点覆盖,需要保证至少有一个子节点建立 注:检查变量名与实际含义. 码: #include ...

  3. 洛谷P2016战略游戏

    传送门啦 战略游戏这个题和保安站岗很像,这个题更简单,这个题求的是士兵人数,而保安站岗需要求最优价值. 定义状态$ f[u][0/1] $ 表示 $ u $ 这个节点不放/放士兵 根据题意,如果当前节 ...

  4. gta5显示nat较为严格_一年内上涨近3000元/㎡!碧桂园翡翠华府物业管理严格到令人惊叹...

    近几年南通飞速发展,各种利好背后是新区的崛起,崇川区的地位从未被撼动,当之无愧的中心之中,以南大街商圈为代表的老城区可开发区域基本达到饱和,而以中南商圈为代表的区域迅速发展为我们现在所说的新城区:自南 ...

  5. [职场人生]我的华为3Com两年(原创)

     在华为3Com研发工作了两年,前段时间离职了.看到网上关于华为的帖子满天飞,关于华3的却很少,有的都是些关于收购的传闻,于是萌发了一个想法,写一个简要描述里面情况的帖子,算是给想进去的兄弟姐妹们 ...

  6. 树形dp+树形结构总结

    总结 最近写了好多树形dp+树形结构的题目,这些题目变化多样能与多种算法结合,但还是有好多规律可以找的. 先说总的规律吧! 一般来说树形dp在设状态转移方程时都可以用f[i][]表示i这颗子树怎么怎么 ...

  7. 嫁给程序员的十大好处

    医生    医生很危险,我对医生的印象太差,放下他身边女生太多,会跟某个护士小姐跑掉,或是被一个假装生病的年轻女人勾引走不说.而且这种倒霉事还往往发生在你已经为他生了几个小孩的时候.现在的医生都是领提 ...

  8. 电信大型服务器机房_上海电信全华IDC服务器机房

    上海电信全华机房消防报警及灭火系统 消防报警系统采用了智能控制系统,可以准确定位报警点和提示报警信息.温度和烟雾传感器均匀分布各层,准确探测火警信息. 消防联动装置根据报警信号启动灭火装置,关闭新风机 ...

  9. 有一种神一样的学霸,叫北大保安

    过去20多年,北大保安队先后有500余名保安考学深造,有的取大专或本科学历,有的甚至考上研究生,有的毕业后当上了大学老师. 在"丧文化"风靡的互联网,他们的出现似一股清流用&quo ...

最新文章

  1. [for循环之等腰三角形]
  2. DataGridView中的CheckBox
  3. 又一个脑洞实现了!索尼将推出穿在身上的空调:夏日出门必备
  4. using namespace std
  5. H5页面适配 iPhoneX
  6. Docker学习之守护进程
  7. 马士兵_JAVA自学之路(为那些目标模糊的码农们)
  8. 迈克菲实验室:Flame病毒的深度分析
  9. echarts地图插入图片
  10. 【SIPp】Linux-SIPp3.6.0 测试FreeSwitch
  11. 数据结构与算法之图的深度优先遍历(DFS)
  12. 火遍全网的2000款热门短视频剪辑素材+经典音效包素材来了,还不快收下
  13. javascript回调函数有什么用
  14. 51单片机定时器/计数器
  15. 现在进行时的stem课堂设计
  16. c++语言的设计与演化pdf,C++语言的设计和演化(高清)pdf
  17. C语言中switch和case之间的语句是否执行?(答案:不执行)
  18. 插槽的使用教程(普通插槽、具名插槽、域名插槽)
  19. 基于MQTT的消息发布订阅python实现
  20. IOS开发者账号被调查(Other - Other)怎么办?附解决办法

热门文章

  1. 【Android】 Intent应用详解
  2. linux系统下的程序开发报告册,linux系统及应用应用开发实验报告册
  3. python3网络爬虫开发实战下载_【Python3网络爬虫开发实战】 1.1-Python3的安装
  4. DM8 jdbc调用存储过程传参list<实体类>
  5. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)
  6. 如何在ubuntu下安装detectron2_如何在 Debian/Ubuntu 上手动安装安全更新?
  7. POJ - 2942 Knights of the Round Table (双连通分量)
  8. 2049 : 压死骆驼的最后一根稻草 (规律)
  9. linux tr命令书上的一个很好的例子
  10. c++拷贝、赋值和销毁的简单介绍