题目: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.机场只有一条起飞跑道,所 有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起 飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类…
[BZOJ2109/2535][NOI2010]航空管制(贪心) 题面 BZOJ2109 BZOJ2535 题解 很好玩的一道题目 先看第一问,显然是要找一个合法的拓扑排序的序列. 直接拓扑排序,把队列变成堆?发现这样子不能保证满足时间的限制. 因为这样子有后效性,你永远不知道把这个点给选走之后,它后面的点的限制. 所以我们连反边,每次选择时间限制最靠后的那个,这样子就可以保证时间靠前的尽可能在前面 (是不是蜜汁像\(HNOI2015\)菜肴制作) 因为保证有解,所以这样子做出来的一定是合法解.…
Description世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类限制条件:…
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类限制条件:…
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此, 小X表示很不满意. 在这次来烟台的路上,小 X不幸又一次碰上了航空管制.于是小 X开始思考 关于航空管制的问题. 假设目前被延误航班共有 n个,编号为 1至n.机场只有一条起飞跑道,所 有的航班需按某个顺序依次起飞(称这个顺序为起飞序列).定义一个航班的起 飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班. 起飞序列还存在两类…
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…
题意 题目链接 Sol 非常妙的一道题. 首先不难想到拓扑排序,但是直接对原图按\(k\)从小到大拓扑排序是错的.因为当前的\(k\)大并不意味着后面的点\(k\)也大 但是在反图上按\(k\)从大到小拓扑排序就是对的.为什么呢?因为题目中给出的条件是下限, 而在反图上拓扑排序就相当于卡着下限做,因此一定是最优的 对于第二问,同样在反图上搞.对每个点分开做,贪心的策略是:如果有其他的飞机可以起飞则让他们起飞,直到没有飞机可以起飞,这时的时间就是答案 // luogu-judger-enable-…
题目链接 BZOJ2535 题解 航班之间的关系形成了一个拓扑图 而且航班若要合法,应尽量早出发 所以我们逆拓扑序选点,能在后面出发的尽量后面出发,不会使其它点变得更劣,容易知是正确的 第二问只需枚举航班\(x\),拓扑排序时忽视\(x\),最后无法选点时就是\(x\)最早的时间 #include<iostream> #include<cstdio> #include<cmath> #include<queue> #include<map> #i…