[NOI2010] 航空管制

打印 上一主题 下一主题

主题 510|帖子 510|积分 1530

link
正难则反。既然限制最后的起飞时间不太好做,考虑建反图,然后把限制转化成什么时候之后才能起飞。于是第一问可以暴力寻找限制时间最大的点(如果它都飞不起来那么其它点更别想了)。这就解释了为什么要建反图,因为在原图上随着时间的推移有些点会被封闭起来,拖得越久越不利,所以不好弄;而反图上则是随着时间解放一些点,是否可行一目了然,就算现在不行等一等总会等到的,所以和时间关系不大。至于第二问,考虑在第一问的过程中强制不选那个点,如果选不动了(所有点都无法转移或者干脆就剩它一个点)就说明它最早可以在那个时间出来。
[code]#include//#define zczcconst int N=2010;const int M=10010;using namespace std;inline void read(int &wh){    wh=0;int f=1;char w=getchar();    while(w'9'){if(w=='-')f=-1;w=getchar();}    while(w='0'){wh=wh*10+w-'0';w=getchar();}    wh*=f;return;}struct edge{        int t,next;}e[M];int head[N],esum;inline void add(int fr,int to){        e[++esum]=(edge){to,head[fr]};head[fr]=esum;}int m,a[N],n,d[N],an[N];struct node{        int id,ti;};inline bool operator s1.ti;}priority_queueq;signed main(){                #ifdef zczc        freopen("in.txt","r",stdin);        #endif                read(m);read(n);int s1,s2;        for(int i=1;i
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表