BZOJ-2535 航空管制 toposort
题目传送门
题解:
如果正着连边,可以发现最困难的点是ti不好处理。
所以我们连反边,然后将ti转换成前面有n-ti+1架飞机起飞了作为限制条件。
对于第一问,直接toposort 然后反着输出求出的结果。
对于第二问,我们则枚举每个架飞机,然后在toposort的时候不把这个点入队,直到队列为空的时候,这个时候就是这架飞机的最早起飞时间了。
代码:
/* code by: zstu wxk time: 2019/02/22 */ #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout); #define LL long long #define ULL unsigned LL #define fi first #define se second #define pb push_back #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define lch(x) tr[x].son[0] #define rch(x) tr[x].son[1] #define max3(a,b,c) max(a,max(b,c)) #define min3(a,b,c) min(a,min(b,c)) typedef pair<int,int> pll; const int inf = 0x3f3f3f3f; const int _inf = 0xc0c0c0c0; const LL INF = 0x3f3f3f3f3f3f3f3f; const LL _INF = 0xc0c0c0c0c0c0c0c0; const LL mod = (int)1e9+7; const int N = 1e5 + 100; int n, m; vector<int> vc[N]; vector<int> e[N]; int ind[N], vis[N], t[N], ans[N]; void init(){for(int i = 1; i <= n; ++i) ind[i] = vis[i] = 0;for(int i = 1; i <= n; ++i){for(int j = 0; j < e[i].size(); ++j){int v = e[i][j];++ind[v];}} } int toposort(int ban){queue<int> q;for(int j = 0; j < vc[n].size(); ++j){int v = vc[n][j];if(!ind[v] && v != ban){q.push(v);vis[v] = 1;}}for(int k = n; k >= 1; --k){if(q.empty()) return k;int x = q.front();q.pop();ans[k] = x;for(int j = 0; j < e[x].size(); ++j){int v = e[x][j];if(v == ban) continue;ind[v]--;if(ind[v] == 0 && t[v] >= k && !vis[v]){vis[v] = 1;q.push(v);}}for(int j = 0; j < vc[k-1].size(); ++j){int v = vc[k-1][j];if(v == ban) continue;if(!vis[v] && ind[v] == 0){q.push(v);vis[v] = 1;}}}return 1; } void Ac(){for(int i = 1; i <= n; ++i){scanf("%d", &t[i]);vc[t[i]].pb(i);}for(int i = 1,u,v; i <= m; ++i){scanf("%d%d", &u, &v);e[v].pb(u);}init();toposort(0);for(int i = 1; i <= n; ++i){printf("%d%c", ans[i], " \n"[i==n]);}for(int i = 1; i <= n; ++i){init();printf("%d%c", toposort(i), " \n"[i==n]);} } int main(){while(~scanf("%d%d", &n, &m)){Ac();}return 0; } /* 5 5 4 5 2 5 4 1 2 3 2 5 1 3 4 3 1*/
View Code
转载于:https://www.cnblogs.com/MingSD/p/10419339.html
BZOJ-2535 航空管制 toposort相关推荐
- BZOJ 2535:NOI 2010 航空管制
[NOI2010]航空管制 题面请点上面. 首先第一问,我第一想法是把它放到一个小根堆中,然而这是不行的. 正确的思路是,把图反过来建,然后放到一个大根堆里去. 至于原因,感性理解一下,正着贪是有后效 ...
- bzoj 2109: [Noi2010]Plane 航空管制
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此, 小X表示很不满意. 在这次来烟台的 ...
- [NOI2010]航空管制(拓扑排序+贪心)
题目描述 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上,小X不幸又一 ...
- bzoj 2535: [Noi2010]Plane 航空管制2【拓扑排序+堆】
有个容易混的概念就是第一问的答案不是k[i]字典序最小即可,是要求k[i]大的尽量靠后,因为这里前面选的时候是对后面有影响的(比如两条链a->b c->d,ka=4,kb=2,kc=3,k ...
- bzoj 2109 amp; 2535 空中管制 解读
[] [分析]小猪真的是一个很好的问题.我认为这是一个问题洪水.建立拓扑后(便! ).直接把最外层设定序号为1,第二层为2.bfs下去就可以. . . 结果发现:飞行序号不能同样.. . 于是開始想. ...
- BZOJ2535: [Noi2010]Plane 航空管制2
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2535 把图反向,拓扑排序一下,用并查集维护当前权值能放置的最大位置.对于第二问,就相当于我把点 ...
- BZOJ2535 [Noi2010]Plane 航空管制 【贪心 + 堆】
题目链接 BZOJ2535 题解 航班之间的关系形成了一个拓扑图 而且航班若要合法,应尽量早出发 所以我们逆拓扑序选点,能在后面出发的尽量后面出发,不会使其它点变得更劣,容易知是正确的 第二问只需枚举 ...
- BZOJ2535: [Noi2010]Plane 航空管制2(拓扑排序 贪心)
题意 题目链接 Sol 非常妙的一道题. 首先不难想到拓扑排序,但是直接对原图按\(k\)从小到大拓扑排序是错的.因为当前的\(k\)大并不意味着后面的点\(k\)也大 但是在反图上按\(k\)从大到 ...
- [Luogu P2447] [BZOJ 1923] [SDOI2010]外星千足虫
洛谷传送门 BZOJ传送门 航空航天局(NASA)研制发射,行经火星.金星.土卫六.木卫二.谷神星."张衡星"等232323颗太阳系星球,并最终在小行星"杰森星" ...
最新文章
- 内核层CS段描述符信息
- CRF++命名实体识别(NER)初步试探
- document.execCommand()函数可用参数解析 (转)
- django2连接mysql_Django2.2连接MySQL问题解决
- mac php gd(mac osx 10.9.4)
- 变量存储list python_Python变量类型(八)
- MySQL 5.7安装(多实例)最佳实践
- java实现人脸识别源码【含测试效果图】——前期准备工作及访问提示
- c51为啥要宏定义时钟_c51时钟
- 新浪视频播放器站外调用代码
- 未来教育 计算机四级题库,未来教育计算机等级考试四级数据库工程师题库.docx...
- 全球与中国医疗AR VR市场深度研究分析报告
- codeforces1296F Berland Beauty
- 解析人工智能与人类智慧的求同存异
- 国家统计局举办开放日 称将迎接“大数据”挑战
- 写javaEE初学者的我
- 0FFICE2007 EXCEL跨工作簿引用的缺点
- TP Link WN726N ubuntu18安装成功
- Spring启动过程详解
- section 5: 字体
热门文章
- python string与list互转
- attr和prop区别
- 向量叉乘判断两向量之间是顺时针还是逆时针
- 【leetcode】Integer to Roman
- PDF N-Up Maker:一个把PDF转成小册子或者把多个页面放到一个页面上的工具(免费,免Acrobat,命令行模式)...
- linux开启ssh服务,实现ssh远程登录
- linux ns级定时器_预热 | 万众期待的单片机、Linux二合一的STM32MP157开发板亮相
- android 自定义属性 双向绑定,如何解决:“在使用自定义视图实现双向数据绑定时,找不到属性’android:text’”的getter?...
- 小程序iconfont报错_【经验】开发微信小程序经验总结
- SpringCloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine