POJ1036 Gangsters】的更多相关文章

题目来源:http://poj.org/problem?id=1036 题目大意: 有N个强盗要进入一家饭店打劫,第i个强盗在Ti时刻到达,会抢到Pi的财产.饭店的门有K+1状态,门打开的程度为[0,K].0表示门完全关闭.每过一个单位时间,门可以打开或合上一个单位,或保持不变.初始时刻店门紧闭.第i个强盗只能在门打开的状态为Si时才能进入饭店,Si表示第i个强盗的体型.如果强盗到达饭店时,他不能进入饭店,他将离开不再回来.饭店的营业时间是[0,T].程序的目标是控制门的开关,使强盗可以获得最多…
题意: 树的根节点为水源,编号为 1 .给定编号为 2, 3, 4, …, n 的点的父节点.已知只有叶子节点都是房子. 有 q 个操作,每个操作可以是下列两者之一: + v ,表示编号为 v 的房子被歹徒占领. - v ,表示歹徒退出编号为 v 的房子. 初始所有房子都没有歹徒.对于每次变化后,要求删除最少的边,使得所有有歹徒的房子均无法与水源连通:同时,在此基础上要求受影响的普通房子数量最少. 题解: 首先对树的根节点的子树分类,那么实际上最多删除的边就是子树个数. 对于每个子树,如果要求受…
题意:现在有一棵树,1号节点是水源,叶子节点是村庄,现在有些怪兽会占领一些村庄(即只占领叶子节点),现在要割去一些边,使得怪兽到不了水源.给出怪兽占领和离开的情况,现在要割每次回答最小的割,使得怪兽不与1号节点有联系,而且满足被阻隔的村庄最少.输出最小割与组少的被误伤的村庄. 思路:把与一号节点相邻的点看作祖先gfa,然后它们自己作为树的根节点,根节点保存了子树里叶子节点的个数.很显然一棵树我们要割的是这棵树里所有怪兽的LCA与父亲边.子数里所有怪兽的LCA=LCA(最小DFS序的怪兽点,最大D…
题目传送门 /* 思维题:注意题目一句话:At some moment it happened so that they shot one and the same can. 如果两个人都有射中的话,肯定一个can同时被打中 */ #include <bits/stdc++.h> using namespace std; int main(void) //URAL 1409 Two Gangsters { int a, b; while (cin >> a >> b)…
G.Gangsters in Central City 题意:一棵树,节点1为根,是水源.水顺着边流至叶子.该树的每个叶子上有房子.有q个询问,一种为房子u被强盗入侵,另一种为强盗撤离房子u.对于每个询问,要求给出最小的阀门数来阻断水流向强盗所在房子,且在阀门数最小的情况下求最小的误伤房子数(即没被入侵却被断水的房子). 思路:观察可发现,与根相连的子树都是独立的,因此有每有一颗这样的子树里有强盗,则ans1++,每有一颗这样的子树强盗全部撤离则ans1--:因此要维护的是误伤数ans2,我们对…
给出一棵$1$为根节点的含$n$个节点的树,叶子节点都是房屋,在一个集合里面添加房屋和移除房屋. 每一次添加和移除后,回答下面两个问题. 1.  使得已选房屋都不能从根节点到达,最少需要砍多少条边. 2.  在第$1$问最少砍去边的条件下,如何砍边使得从节点点开始走不能到达的非已选房屋数目最小,输出最小值. 对于100%的数据 , $2 ≤ n ≤ 10^5 , 1 ≤ q ≤ 10^5$ Solution : 首先观察到,第一问的答案. 非常容易证明的一个上边界是砍去所有合法的$u$和1的连边…
题目链接:https://cn.vjudge.net/problem/Gym-101142G 知识点: DFS序.LCA 题目大意: 给定一棵有根树(根为 \(1\)).每次修改叶子节点会被染成黑色(最开始都是白色的),也可以被染回白色.给出 \(q\) 次修改,对每次修改问最少需要切断几条边就能保证黑色叶子不在树上,和保证用最少的切断数使得黑色叶子不在树上的前提下最少会有多少白色叶子与根的联系也被切断了. 解题思路: 设根有 \(k\) 棵子树,除了根以外的所有结点都在这 \(k\) 棵子树中…
http://poj.org/problem?id=1036 题意:N个土匪,伸缩门的范围是K, 时间T, 伸缩门在[0, k]范围内变动,每个单位时间可以不变伸长或者缩短一个单位.给出每个最烦到达的时刻,取得的成就,和肥胖程度.即如果伸缩门的长度和土匪的肥胖程度一样,即得到成就. 状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j],dp[i-1][j+1])+a[i][j]; #include <cstdio> #include <cstring>…
题目传送门 题意:n个歹徒进饭店,可变化宽度的门,范围[0, k],每个歹徒进门在ti时间进门,身材si,进去后有pi的成功值,问最大的成功值 分析:首先按照进门时间排序,dp[i][j] 表示第i个歹徒在门大小为j的时候进门的最大成功值,那么状态转移方程:dp[i][j] = dp[i-1][k] + a[i].p 条件是门大小从k到j的时间差小于i和ii-1人进门时间差 收获:这类有条件限制的dp转移,我分类为条件DP 代码: /*******************************…
HINT: $1\leq N,Q\leq 10^5$ 原题:CodeChef November Challenge 2013 - MONOPLOY 题解: 其实这题是[SDOI2017]树点涂色的弱化版... 然后树点涂色这题甚至是[LOJ6022][BZOJ3779]重组病毒的弱化版... 首先题目中的距离就是求路径上不同颜色的数目: 容易发现修改操作看起来很像LCT里的轻重边切换,那么以dfs序为下标建一颗线段树维护每个点到根节点的距离和,外面用一颗LCT维护,每次access轻重边切换的时…