BZOJ 2535: [Noi2010]Plane 航空管制2】的更多相关文章

Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类限制条件:…
有个容易混的概念就是第一问的答案不是k[i]字典序最小即可,是要求k[i]大的尽量靠后,因为这里前面选的时候是对后面有影响的(比如两条链a->b c->d,ka=4,kb=2,kc=3,kd=4,按字典序就先选c然后b就不能合法了) 所以倒着来,建反图,然后按照n-k[i]从大到小拓扑,因为是反图所以是k大的尽量靠后 然后考虑第二问,是当前点x在拓扑中能入队先不入,直到某个点非法再入,这样虽然顺序变了但是非法点的排名不变所以依然合法 #include<iostream> #incl…
Description世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类限制条件:…
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此, 小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考 关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所 有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起 飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2535 https://www.lydsy.com/JudgeOnline/problem.php?id=2109 考虑按拓扑序决策,发现不太行:主要是一种情况:虽然自己的 k[ ] 靠后,但自己限制的点的 k[ ] 靠前. 这样的话,自己应该尽量往前放:但为了别的点的这种情况,自己又应该尽量往后放,所以无法决策了. 发现这种情况主要和后面的点是否紧急有关.所以就是虽然拓扑序是那样的,但可以…
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此, 小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考 关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所 有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起 飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类…
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类限制条件:…
题意 题目链接 Sol 非常妙的一道题. 首先不难想到拓扑排序,但是直接对原图按\(k\)从小到大拓扑排序是错的.因为当前的\(k\)大并不意味着后面的点\(k\)也大 但是在反图上按\(k\)从大到小拓扑排序就是对的.为什么呢?因为题目中给出的条件是下限, 而在反图上拓扑排序就相当于卡着下限做,因此一定是最优的 对于第二问,同样在反图上搞.对每个点分开做,贪心的策略是:如果有其他的飞机可以起飞则让他们起飞,直到没有飞机可以起飞,这时的时间就是答案 // luogu-judger-enable-…
题目链接 BZOJ2535 题解 航班之间的关系形成了一个拓扑图 而且航班若要合法,应尽量早出发 所以我们逆拓扑序选点,能在后面出发的尽量后面出发,不会使其它点变得更劣,容易知是正确的 第二问只需枚举航班\(x\),拓扑排序时忽视\(x\),最后无法选点时就是\(x\)最早的时间 #include<iostream> #include<cstdio> #include<cmath> #include<queue> #include<map> #i…
[BZOJ2109/2535][NOI2010]航空管制(贪心) 题面 BZOJ2109 BZOJ2535 题解 很好玩的一道题目 先看第一问,显然是要找一个合法的拓扑排序的序列. 直接拓扑排序,把队列变成堆?发现这样子不能保证满足时间的限制. 因为这样子有后效性,你永远不知道把这个点给选走之后,它后面的点的限制. 所以我们连反边,每次选择时间限制最靠后的那个,这样子就可以保证时间靠前的尽可能在前面 (是不是蜜汁像\(HNOI2015\)菜肴制作) 因为保证有解,所以这样子做出来的一定是合法解.…
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此, 小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考 关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所 有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起 飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类…
http://www.lydsy.com/JudgeOnline/problem.php?id=2535 思路:对于1,我们只需要每个点比前驱大就可以了,然后满足尽量优. 对于第二问,我们先求出这个点前驱有几个,记为ans,cnt=ans 每访问一个未访问的点,cnt++ 然后对于后面的点从少往大排,若有k>ans,那么一定在我们当前处理这个点前面,ans++ 若有k<=cnt,说明要i放在这个点的后面,因此ans=k+1 记得不要省方便add(read(),read()),好像会出错. #i…
2109: [Noi2010]Plane 航空管制 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1227  Solved: 510[Submit][Status][Discuss] Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此, 小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考 关于航空…
[NOI2010]航空管制 题面请点上面. 首先第一问,我第一想法是把它放到一个小根堆中,然而这是不行的. 正确的思路是,把图反过来建,然后放到一个大根堆里去. 至于原因,感性理解一下,正着贪是有后效性,会陷入到局部最优解,而反着贪则是从终点出发,是正确的. 第二问也不难,我们考虑当前这个点,能不动他就不动,直到不动不行了(此时两种情况,一是堆空了,二是有人起飞时间晚于降落时间),此时就是第二问的答案. #include<iostream> #include<algorithm>…
2008: [Noi2010]航空管制 Time Limit: 10 Sec  Memory Limit: 552 MBSubmit: 31  Solved: 0[Submit][Status] Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小X不幸又一次碰上了航空管制.于是小X开始思考关于航空管制的问题. 假设目前被延误航班共有n个,编号为…
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类限制条件:…
题目描述 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小X不幸又一次碰上了航空管制.于是小X开始思考关于航空管制的问题. 假设目前被延误航班共有n个,编号为1至n.机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类限制条件: • 第一类(最晚起飞…
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类限制条件:…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2535 https://www.lydsy.com/JudgeOnline/problem.php?id=2109 这个题,如果正着考虑,也就是先考虑放在前面的再考虑放在后面的,决策时会有矛盾:也就是,如果要求 pos[a] < pos[b],则先考虑放 a,因为许多点放在 a 后面,所以 a 尽量往前放可以给它们留出空位:但又有限制最晚起飞时间,那么先考虑的 a 应该尽量放在靠近它最晚起飞…
题目链接 双倍经验(没有第一问) \(Description\) \(Solution\) 第一问拓扑排序即可. 第二问,即让一个元素在拓扑序中尽量靠前,好像不好做. 但是可以让一个元素出现尽量靠后.给它分配一个小的权值,把队列换成优先队列即可(优先弹同一层但是权值大的). 这题可以直接判队列为空时(或者当前最晚的飞机已晚于当前时间),令它此时起飞. 所以我们建反图,跑\(n\)次拓扑排序即可.(第一问直接用反图求拓扑序就行) 复杂度\(O(nm\log n)\). 这样用堆做虽然能过 但还是有…
http://www.lydsy.com/JudgeOnline/problem.php?id=2535 贪心. 对于第1个问,我们先建立拓扑图,对于如果a必须在b前起飞,那么连有向边b->a,并求出点的入度. 将所有入度为0的点放在一个优先队列里,按最大起飞编号从大到小排序. 我们从后往前考虑起飞的航班. 取出优先队列中最大起飞编号最大的点,作为最后一个航班,并删去拓扑图中与他相连的边,如果有新的点的入度变成0,继续加入优先队列里. 重复操作次即可. 如果问第i个航班最早可以什么时候起飞,我们…
关于拓扑排序的反建图还是一个非常套路的东西 比如说[HNOI2015]菜肴制作 我们希望使得某一个东西在拓扑序中出现的尽可能早,这个时候就可以建出一张反图来,使得这个东西在反图中的拓扑序尽量靠后,从而使得其出现的尽可能地早 这是为什么呢,比如说我们希望\(1\)出现的尽可能早,直接在正图上开一个小根堆来进行拓扑排序显然错的 为什么呢,因为这样只能使字典序尽可能小,而不是使得\(1\)尽可能靠前 但是我们建出反图来呢,显然反图上按照上述方法来跑的话会使得反向字典序最小,而最小的反向字典序一定是\(…
绝世好题啊.. 题意:给出一个DAG,和每个点要求出现在这个DAG里面的拓扑排序的位置<=ti,求出所有可能的拓扑排序里面每个点出现的位置的最小值. 正着做不好做,考虑反着做,建立这个图的反图. 对于一个点出现的位置的最小值,就是n-这个点在反图中出现的位置的最大值. 也就是说拓扑排序时尽量把这个点i排在后面就行了.但是还需要满足一个限制,在反图中这个限制就是每个点在拓扑排序的位置>=n-ti. 于是我们每次拓扑排序从队列中取出点的时候,尽量取n-ti值最小的点,这样就能尽量使得当前处理的点i…
https://www.luogu.org/problemnew/show/P1954 拓扑排序, 注意到如果正着建图("a出现早于b"=>"a向b连边"),贪心选择,可能前面某一次的选择造成后面找不出合法方案: 但是如果反过来建图,而且每一次选择当前入度为0的点中K值最大的,那么一定不会产生前面那种情况:因此用堆维护 对于第一问,直接跑一遍即可..(而且题面还说了一定有可行解) 对于第二问, 设当前要使得now的起飞序号最小,那么就是使得在反着的图的拓扑序遍…
2005: [Noi2010]能量采集 Time Limit: 10 Sec  Memory Limit: 552 MBSubmit: 3312  Solved: 1971[Submit][Status][Discuss] Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后, 栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得非常整齐,一共有n列,每列 有m棵,植物的横竖间距都一样,因此对于每一棵植…
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2613  Solved: 1297[Submit][Status][Discuss] Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的 音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中Ai可正可负. 一个“超级 和弦”由若干个编号连续的音符组成,…
2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2410  Solved: 1142[Submit][Status][Discuss] Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个 正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路 (简称道路),每条双向道路连…
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2222  Solved: 1082[Submit][Status][Discuss] Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中Ai可正可负. 一个“超级和弦”由若干个编号连续的音符组成,包含…
题目链接:BZOJ - 2007 题目分析 首先,左上角的高度是 0 ,右下角的高度是 1.那么所有点的高度一定要在 0 与 1 之间.然而选取 [0, 1] 的任何一个实数,都可以用整数 0 或 1 来替换,获得同样的效果. 虽然输出的答案要求是四舍五入到整数,但其实答案就是一个整数! 那么高度就一定是 0 或 1 了,并且还有一点,所有选 0 的点都连通,所有选 1 的点都联通.因为如果一个选 0 的点被选 1 的点包围,那么它选 1 更优. 于是整个图中所有的点分成了与左上角相连的集合 A…
取最大的K个, 用堆和RMQ来加速... ----------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<queue>   using namespace std; typedef long long ll; typedef pair<int, int>…