题目链接

双倍经验(没有第一问)

\(Description\)

\(Solution\)

第一问拓扑排序即可。

第二问,即让一个元素在拓扑序中尽量靠前,好像不好做。

但是可以让一个元素出现尽量靠后。给它分配一个小的权值,把队列换成优先队列即可(优先弹同一层但是权值大的)。

这题可以直接判队列为空时(或者当前最晚的飞机已晚于当前时间),令它此时起飞。

所以我们建反图,跑\(n\)次拓扑排序即可。(第一问直接用反图求拓扑序就行)

复杂度\(O(nm\log n)\)。

这样用堆做虽然能过 但还是有些暴力。。我们按时间排序,模拟一波即可。就不写了。

//952kb	2796ms
#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
#define mp std::make_pair
#define pr std::pair<int,int>
typedef long long LL;
const int N=2005,M=1e4+5; int n,tm[N],Enum,H[N],nxt[M],to[M],indgr[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline void AE(int u,int v)
{
++indgr[v], to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum;
}
void Solve1()
{
static int dgr[N],ans[N];
std::priority_queue<pr> q;
memcpy(dgr,indgr,sizeof dgr); for(int i=1; i<=n; ++i) if(!dgr[i]) q.push(mp(tm[i],i));
for(int t=n,x; t; --t)
{
ans[t]=x=q.top().second, q.pop();
for(int i=H[x]; i; i=nxt[i])
if(!--dgr[to[i]]) q.push(mp(tm[to[i]],to[i]));
}
for(int i=1; i<=n; ++i) printf("%d ",ans[i]);
putchar('\n');
}
int Solve2(int s)
{
static int dgr[N];
std::priority_queue<pr> q;
memcpy(dgr,indgr,sizeof dgr); for(int i=1; i<=n; ++i) if(!dgr[i]&&i!=s) q.push(mp(tm[i],i));
for(int t=n,x; t; --t)
{
if(q.empty()) return t;
x=q.top().second, q.pop();
if(t>tm[x]) return t;//既然有解那就能保证这样也有解啊 不满足就return了。
for(int i=H[x]; i; i=nxt[i])
if(to[i]!=s && !--dgr[to[i]]) q.push(mp(tm[to[i]],to[i]));
}
return 1;
} int main()
{
n=read(); int m=read();
for(int i=1; i<=n; ++i) tm[i]=read();
while(m--) AE(read(),read());
Solve1();
for(int i=1; i<=n; ++i) printf("%d ",Solve2(i)); return 0;
}

BZOJ.2109.[NOI2010]航空管制(拓扑 贪心)的更多相关文章

  1. [NOI2010]航空管制(拓扑排序+贪心)

    题目描述 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小X不幸又一 ...

  2. 【BZOJ2109/2535】【NOI2010】航空管制(贪心)

    [BZOJ2109/2535][NOI2010]航空管制(贪心) 题面 BZOJ2109 BZOJ2535 题解 很好玩的一道题目 先看第一问,显然是要找一个合法的拓扑排序的序列. 直接拓扑排序,把队 ...

  3. NOI2010航空管制

    2008: [Noi2010]航空管制 Time Limit: 10 Sec  Memory Limit: 552 MBSubmit: 31  Solved: 0[Submit][Status] De ...

  4. [BZOJ2109][NOI2010]航空管制(贪心+拓扑)

    2109: [Noi2010]Plane 航空管制 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1227  Solved: 510[Submit][ ...

  5. bzoj 2109: [Noi2010]Plane 航空管制

    Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此, 小X表示很不满意. 在这次来烟台的 ...

  6. bzoj2535 [Noi2010]航空管制

    Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上 ...

  7. bzoj 2535 && bzoj 2109 [Noi2010]Plane 航空管制——贪心

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2535 https://www.lydsy.com/JudgeOnline/problem.p ...

  8. BZOJ 2109 航空管制(拓扑排序+贪心)

    绝世好题啊.. 题意:给出一个DAG,和每个点要求出现在这个DAG里面的拓扑排序的位置<=ti,求出所有可能的拓扑排序里面每个点出现的位置的最小值. 正着做不好做,考虑反着做,建立这个图的反图. ...

  9. BZOJ2535 [Noi2010]Plane 航空管制 【贪心 + 堆】

    题目链接 BZOJ2535 题解 航班之间的关系形成了一个拓扑图 而且航班若要合法,应尽量早出发 所以我们逆拓扑序选点,能在后面出发的尽量后面出发,不会使其它点变得更劣,容易知是正确的 第二问只需枚举 ...

随机推荐

  1. 为什么Docker比虚拟机快?

    1.Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu.内存利用率上Do ...

  2. SpringBoot整合Jdbc

    (1).添加相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...

  3. awk技巧【转】

    转自 awk技巧(如取某一行数据中的倒数第N列等) - 散尽浮华 - 博客园 https://www.cnblogs.com/kevingrace/p/8481965.html 使用awk取某一行数据 ...

  4. jvm系列一、java类的加载机制

    一.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构 ...

  5. 前端实现商品sku属性选择

    一.效果图 二.后台返回的数据格式 [{ "saleName": "颜色", "dim": 1, "saleAttrList&qu ...

  6. 如何在DOS窗口复制和粘贴命令

    在键盘上按下windows+R键,打开运行窗口. 在“打开”处输入cmd,并按下enter键,打开DOS窗口. 把鼠标移动到DOS窗口标题处,单击鼠标右键,选择属性. 把编辑选项处的“快速编辑模式”勾 ...

  7. PYTHON-模块time&datetime+ 目录规范

    1.目录规范 ***** (1)文件夹的规范写法 bin 可执行文件 conf 配置文件 core 主要业务逻辑 db 数据文件 lib 库 (公共代码 第三方模块) log 日志文件 readme ...

  8. Clipboard深度实践与采坑记录

    1.css禁止选择导致IOS无法复制 body{ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: ...

  9. mybatis学习笔记--常见的错误

    原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...

  10. OCM_第十一天课程:Section5 —》数据仓库

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...