BZOJ.2109.[NOI2010]航空管制(拓扑 贪心)
\(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]航空管制(拓扑 贪心)的更多相关文章
- [NOI2010]航空管制(拓扑排序+贪心)
题目描述 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小X不幸又一 ...
- 【BZOJ2109/2535】【NOI2010】航空管制(贪心)
[BZOJ2109/2535][NOI2010]航空管制(贪心) 题面 BZOJ2109 BZOJ2535 题解 很好玩的一道题目 先看第一问,显然是要找一个合法的拓扑排序的序列. 直接拓扑排序,把队 ...
- NOI2010航空管制
2008: [Noi2010]航空管制 Time Limit: 10 Sec Memory Limit: 552 MBSubmit: 31 Solved: 0[Submit][Status] De ...
- [BZOJ2109][NOI2010]航空管制(贪心+拓扑)
2109: [Noi2010]Plane 航空管制 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1227 Solved: 510[Submit][ ...
- bzoj 2109: [Noi2010]Plane 航空管制
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此, 小X表示很不满意. 在这次来烟台的 ...
- bzoj2535 [Noi2010]航空管制
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上 ...
- bzoj 2535 && bzoj 2109 [Noi2010]Plane 航空管制——贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2535 https://www.lydsy.com/JudgeOnline/problem.p ...
- BZOJ 2109 航空管制(拓扑排序+贪心)
绝世好题啊.. 题意:给出一个DAG,和每个点要求出现在这个DAG里面的拓扑排序的位置<=ti,求出所有可能的拓扑排序里面每个点出现的位置的最小值. 正着做不好做,考虑反着做,建立这个图的反图. ...
- BZOJ2535 [Noi2010]Plane 航空管制 【贪心 + 堆】
题目链接 BZOJ2535 题解 航班之间的关系形成了一个拓扑图 而且航班若要合法,应尽量早出发 所以我们逆拓扑序选点,能在后面出发的尽量后面出发,不会使其它点变得更劣,容易知是正确的 第二问只需枚举 ...
随机推荐
- 为什么Docker比虚拟机快?
1.Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu.内存利用率上Do ...
- SpringBoot整合Jdbc
(1).添加相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...
- awk技巧【转】
转自 awk技巧(如取某一行数据中的倒数第N列等) - 散尽浮华 - 博客园 https://www.cnblogs.com/kevingrace/p/8481965.html 使用awk取某一行数据 ...
- jvm系列一、java类的加载机制
一.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构 ...
- 前端实现商品sku属性选择
一.效果图 二.后台返回的数据格式 [{ "saleName": "颜色", "dim": 1, "saleAttrList&qu ...
- 如何在DOS窗口复制和粘贴命令
在键盘上按下windows+R键,打开运行窗口. 在“打开”处输入cmd,并按下enter键,打开DOS窗口. 把鼠标移动到DOS窗口标题处,单击鼠标右键,选择属性. 把编辑选项处的“快速编辑模式”勾 ...
- PYTHON-模块time&datetime+ 目录规范
1.目录规范 ***** (1)文件夹的规范写法 bin 可执行文件 conf 配置文件 core 主要业务逻辑 db 数据文件 lib 库 (公共代码 第三方模块) log 日志文件 readme ...
- Clipboard深度实践与采坑记录
1.css禁止选择导致IOS无法复制 body{ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: ...
- mybatis学习笔记--常见的错误
原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...
- OCM_第十一天课程:Section5 —》数据仓库
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...