b2OJ_1565_[NOI2009]植物大战僵尸_拓扑排序+最大权闭合子 题意:n*m个植物,每个植物有分数(可正可负),和能保护植物的位置.只能从右往左吃,并且不能吃正被保护着的,可以一个不吃,求获得的最大分数. 分析:把每个植物向能保护它的植物连边.源点连正权点,负权点连汇点. 考虑在一个环上的植物是吃不到的,我们可以用拓扑排序确定哪些是能吃的. 然后求一遍最大权闭合子图就是答案. 代码: #include <stdio.h> #include <string.h> #inc…
题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0. Sample Input 3 2 10 0 20 0 -10 0 -5 1 0 0 100 1 2 1 100 0 Sample Output 25 分析 题目大概说n*m的格子上有植物,僵尸从某行最右边开始进攻,消除各个植物…
坚决抵制长题面的题目! 首先观察到这个题目中,我们会发现,我们对于原图中的保护关系(一个点右边的点对于这个点也算是保护) 相当于一种依赖. 那么不难看出这个题实际上是一个最大权闭合子图模型. 我们直接对于权值为负数的边,\(S\rightarrow now\),流量是\(-a[i][j]\),表示打掉他要花这么多的代价. 对于权值为正的边,\(now \rightarrow T\) ,流量是\(a[i][j]\),表示如果割掉这个边,表示放弃他的收益. (这里之所以\(S和T\)不能反过来,因为…
图中的保护关系就类似于最大权闭合子图.即你想杀x,你就一定要杀掉保护x的点,那么把x向保护它的点连边.那么题目就转化成了最大权闭合子图的问题. 但是这个图有点特殊啊... 考虑有环的情况,显然这个环以及指向这个环的点都不能选. 所以还要把这个图的反图进行一遍拓扑排序,这样忽略掉了这些点了... # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # i…
Description 传送门 Solution em本题知识点是用网络流求最大点权闭合子图. 闭合图定义:图中任何一个点u,若有边u->v,则v必定也在图中. 建图:运用最小割思想,将S向点权为正的点连边,流量为点权:点权为负的点向T连边,流量为点权的绝对值:原图之间的边流量为inf(表明不能割).答案就是所有正点权之和-该网络流图的最小割(证明还未补qaq) 是不是觉得这个闭合图定义特别的眼熟?似乎可以套在这道题上.(题意:假如你要吃掉某个植物,需要先吃掉这个植物对应的集合,求最大的能源收入…
原文地址:http://www.cnblogs.com/GXZlegend/p/6808268.html 题目描述 输入 输出 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0. 样例输入 3 2 10 0 20 0 -10 0 -5 1 0 0 100 1 2 1 100 0 样例输出 25 题解 拓扑排序+最大权闭合图 一个坑点卡了半年.. 由题目描述易知如果某些植物保护关系成了环,那它们都不能吃掉.所以若A能保护B,则A向B连边,再用拓扑排序判…
植物大战僵尸 bzoj1565 题目大意:给你一张网格图,上面种着一些植物.你从网格的最右侧开始进攻.每个植物可以对僵尸提供能量或者消耗僵尸的能量.每个植物可以保护一个特定网格内的植物,如果一个植物被保护,那么如果僵尸想吃掉该植物就必须先吃掉保护它的植物.问:僵尸最多能获得多少能量. 注释:1<=N(网格的宽)<=20,1<=M(网格的长)<=30,-20,000<=代价和收益<=20,000. 想法:前置题目([NOI2006]最大获利).这道题和最大获利比较相像,如…
题目链接 这题数据xie强qwq.拓扑用的那个图建反了得80. 一眼看出(个屁,题解上都说一眼看出,然而我还是太蒻了)这是个最大权闭合图.从被保护植物向保护植物连边,然后跑最大流,用正点权和减去. 哦最大权闭合图我会. 准备开始码. 等等题解下面好像还写东西? emmmm有环,所以拓扑排序…… 好,我写…… 写了半小时,调了两发过样例交了. wtf80? 然后想了半小时,想不出来为什么qwq. 然后手推. 不对呀数据给的这张图拓扑不动呀? 然后想了想,觉得不对呀……应该反着拓扑才对…… 然后翻题…
题目: http://cojs.tk/cogs/problem/problem.php?pid=410 410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:pvz.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如P…
题目描述 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来防守Zombies的进攻,或者相反地由玩家通过控制Zombies对Plants发起进攻. 现在,我们将要考虑的问题是游戏中Zombies对Plants的进攻,请注意,本题中…
题意: n*m的矩阵,每个位置都有一个植物.每个植物都有一个价值(可以为负),以及一些它可以攻击的位置.从每行的最右面开始放置僵尸,僵尸从右往左行动,当僵尸在植物攻击范围内时会立刻死亡.僵尸每到一个位置可以获得该位置植物的价值.僵尸可以无限放置,求最大的价值和. 题解: 这种模型好像叫做最大权闭合子图. 首先通过拓扑排序将成环的点(即植物互相保护无法走到的点)删掉. 之后对于剩下的点A,若w > 0,则S→A连权值为w的边. 若w < 0,则A→T连权值为-w的边. 若A保护B(即B在A攻击范…
传送门:https://www.luogu.org/problemnew/show/P2805 题意 有一个n * m的地图,你可以操纵僵尸从地图的右边向左边走,走的一些地方是有能量值的,有些地方会被一些植物保护起来不能走,只有先吃掉特定植物才能走一些地方.求最大可能拿到的能量值和 思路 最大权闭合子图,由于僵尸只能从一行的右边一步一步走到左边,所以每个格子向右边连一条inf的边(表示选了这个点,右边这个点必选),然后有保护的原因,从被保护的格子向保护的格子连一条inf的边.然后就是最大权闭合子…
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1565 n*m的矩阵,可以种植植物,僵尸从图的右边进入吃植物.前面的植物可以保护后面的植物,还有一些植物会保护特定位置的其他植物.这里保护的意思是:a保护b等价于僵尸必须先吃a,才能吃b.每个植物有一个价值(可正可负),问僵尸能获得的最大价值. 1565: [NOI2009]植物大战僵尸 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1972  …
题目 输入格式 输出格式 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0. 输入样例 3 2 10 0 20 0 -10 0 -5 1 0 0 100 1 2 1 100 0 输出样例 25 提示 在样例中, 植物P1,1可以攻击位置(0,0), P2, 0可以攻击位置(2,1). 一个方案为,首先进攻P1,1, P0,1,此时可以攻击P0,0 .共得到能源收益为(-5)+20+10 = 25.注意, 位置(2,1)被植物P2,0保护,所以无法攻击…
先拓扑排序搞出合法的, 然后就是最大权闭合图模型了.... --------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm>   using namespace std;   #define Id(x, y) ((x) * c + (y))   const int maxv = 700;…
P2805 [NOI2009] 植物大战僵尸 题目描述 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来防守Zombies的进攻,或者相反地由玩家通过控制Zombies对Plants发起进攻. 现在,我们将要考虑的问题是游戏中Zo…
1565: [NOI2009]植物大战僵尸 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2161  Solved: 1000[Submit][Status][Discuss] Description Input Output 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0. Sample Input 3 2 10 0 20 0 -10 0 -5 1 0 0 100 1 2 1 100 0 Sampl…
bzoj1565: [NOI2009]植物大战僵尸 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1565 思路 很容易的想到最大权闭合子图 但这个图是有环的 有环的地方当然是都过不去的地方 显然他所保护的地方也是过不去的 他保护的地方的保护的地方也是过不去的 等等 还有这个这一行的[1,i]也是过不去的 tarjan之后递归判一下就行了 错误 好菜欧,调试了半天 其实我一开始以为环上就有了他所保护的地方 改了之后又没想到他保护的地方的保…
BZOJ_4010_[HNOI2015]菜肴制作_拓扑排序+贪心 Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号为1.由于菜肴之间口味搭配的问题, 某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如“i 号菜肴‘必须’ 先于 j 号菜肴制作”的限制,我们将这样的限制简写为<i,j>.现在,酒店希望能求 出一个最优的菜肴的制作顺序,使…
http://www.lydsy.com/JudgeOnline/problem.php?id=1565 https://www.luogu.org/problemnew/show/P2805 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制P…
题目 我太\(zz\)了 有一个非常显然的问题就是一个植物显然能保护同一行上比它更靠后的植物,因为显然得先干掉更靠前的植物 首先可以看出来这是一个经典的最大权闭合子图的模型,于是去套最小割 发现植物的收益有正有负,于是想到正的和源点连边,负的和汇点连边 我们再来考虑一个植物没有被割掉的的状态 显然是和源点的那条边没被割掉,所以这个植物应该向保护它的植物连边,连代价为\(inf\)的边,想要保留和源点的边就必须去割掉这些连出去的边指向的植物到汇点的边 但是发现这样连样例都过不了 因为有一些植物非常…
传送门 解题思路 最大权闭合子图.但是要注意一些细节,假如有一堆植物形成一个环,那么这些植物都是无敌的,并且他们保护的植物是无敌的,他们保护的保护的植物是无敌 的.所以要缩点,然后拓扑排序一次判无敌,然后剩下的就是一个最大权闭合子图模板了.源点向正权点连流量为正权的边,负权点向汇点连流量为负权绝对值的边,然后保护关系之间连流量为正无穷的边.最后答案为总正权-最小割. 代码 #include<iostream> #include<cstdio> #include<cstring…
正解:网络流 解题报告: 传送门$QwQ$ 题面好长昂,,,我大概概括下$QwQ$?有个$n\cdot m$的网格,每个格子有一株植物,击溃一株植物$(x,y)$需要付出$S_{(x,y)}$的代价($S$可正可负.另外每株植物有$A_{(x,y)}$个可攻击位置,只要这株植物不死这些位置都是无法到达的$QwQ$.攻击规则是必须从右向左走,如果要攻击$(x,y)$位置的植物,需要把第$x$行在$y$右侧的所有植物都击溃才行$QwQ$ $umm$然后先考虑要击溃一株植物的前提$QwQ$?就说要击溃…
题意: 植物大战僵尸,一个n*m的格子,每 个格子里有一个植物,每个植物有两个属性: (1)价值: (2)保护集合,也就是这个植物可以保护矩阵中的某些格子. 现在你是僵尸,你每次只能从(i,m) 格子进入,从右向左进攻.若一个格子是被保护的那么你是不能进入的.每进入一个格子则吃掉该格子的植物并得到其价值(价值有可能是负的),可以中途返回.问可以得到的最大价值是多少? 分析: 这是一道比较真实的题目.(真打游戏的时候应该也是这种景象吧) 首先我们复习一下最大权闭合子图的特质. 有一个有向图,每一个…
https://www.luogu.org/problemnew/show/P2805 最大权闭合子图的特点是,假如你要选一个结点,则要先选中它的所有子节点.正权连S负权连T,容量为绝对值,原图有向边连容量INF. 这里的特点是在于假如这些结点形成了回路,那么不能选中其中任何一个因为没有突破口. 至于为什么要反向建图,是为了使用拓扑排序把回路以及进入回路的结点剪掉,但是不影响网络流图中从属于回路的子节点. (反向建图后,原本从属于回路的变成可以进入回路,拓扑排序则会把入度非0的剪掉则一举剪除所有…
BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D Input 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C.矩阵B和矩阵C中每个数字都是不超过1000的非负整数. Output 输出最大的D Sample Input 3 1 2 1 3 1 0 1 2 3…
BZOJ_4873_[Shoi2017]寿司餐厅_最大权闭合子图 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=4873 分析:我们发现分数正负都有,并且之间有依赖关系,很容易想到最大权闭合子图. 建图: 1.S向正点连边,负点向T连边. 2.选了[i~j]显然要选[i+1~j]和[i~j-1],分别连边. 3.对于i==j的点,向对应的寿司连边. 4.总花费m*x*x+c*x拆成两部分.对于每个代号x,向T连容量为m*x*x的边,c*x这…
题意:N*M的矩阵 每个点上都有一颗植物 僵尸只能从每一行的最右边向左进攻 每个植物有攻击范围 可以保护在攻击范围内的植物 同时每一颗植物也保护他左边的植物 摧毁每个植物能获得价值 如果这个植物被保护着就无法摧毁 求最大收益 题解:看了题解说 一个物品被若干物品保护着 要摧毁它必须先摧毁保护它的东西这种模型 反向建边就是有向图中的闭合子图这个模型 求闭合子图的最大权十分套路 把所有正权和源点连容量为权值大小的边 把负权点和汇点连容量为权值的绝对值大小的边 权值等于0的点连谁都不影响 然后不同点之…
传送门 结论:这是最大权闭合图的模型 因为可能A保护B,B保护A,出现环. 所以由植物A向植物A保护的植物连边,然后拓扑排序,将环去掉. 然后将拓扑排序的边反向连,建立最大权闭合图的模型. 跑最大流(最小割),用正权边之和-最小割即为答案 #include <queue> #include <cstdio> #include <vector> #include <cstring> #include <iostream> #define N 100…
Description Input Output仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0.Sample Input3 210 020 0-10 0-5 1 0 0100 1 2 1100 0Sample Output25HINT 在样例中, 植物P1,1可以攻击位置(0,0), P2, 0可以攻击位置(2,1).一个方案为,首先进攻P1,1, P0,1,此时可以攻击P0,0 .共得到能源收益为(-5)+20+10 = 25.注意, 位置(2,…