Description

世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生。最近,小X就因为航空管制,连续两次在机场被延误超过了两小时。对此, 小X表示很不满意。 在这次来烟台的路上,小 X不幸又一次碰上了航空管制。于是小 X开始思考 关于航空管制的问题。 假设目前被延误航班共有 n个,编号为 1至n。机场只有一条起飞跑道,所 有的航班需按某个顺序依次起飞(称这个顺序为起飞序列)。定义一个航班的起 飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班。 起飞序列还存在两类限制条件:  第一类(最晚起飞时间限制):编号为 i的航班起飞序号不得超过 ki;  第二类(相对起飞顺序限制):存在一些相对起飞顺序限制(a, b),表示 航班 a的起飞时间必须早于航班 b,即航班 a的起飞序号必须小于航班 b 的起飞序号。 小X 思考的第一个问题是,若给定以上两类限制条件,是否可以计算出一个 可行的起飞序列。第二个问题则是,在考虑两类限制条件的情况下,如何求出每 个航班在所有可行的起飞序列中的最小起飞序号。

Input

第一行包含两个正整数 n和m,n表示航班数目,m表示 第二类限制条件(相对起飞顺序限制)的数目。 第二行包含 n个正整数 k1, k2, „, kn。 接下来 m行,每行两个正整数 a和b,表示一对相对起飞顺序限制(a, b), 其中1≤a,b≤n, 表示航班 a必须先于航班 b起飞。

Output

包含 n个整数 t1, t2, „, tn,其中 ti表示航班i可能的最小起飞序 号,相邻两个整数用空格分隔。

Sample Input

5 5
4 5 2 5 4
1 2
3 2
5 1
3 4
3 1

Sample Output

3 4 1 2 1

在样例 1 中:
起飞序列 3 5 1 4 2 满足了所有的限制条件,所有满足条件的起飞序列有:
3 4 5 1 2 3 5 1 2 4 3 5 1 4 2 3 5 4 1 2
5 3 1 2 4 5 3 1 4 2 5 3 4 1 2
由于存在(5, 1)和(3, 1)两个限制,航班1只能安排在航班 5和3之后,故最早
起飞时间为3,其他航班类似。

对于30%数据:n≤10;
对于60%数据:n≤500;
对于100%数据:n≤2,000,m≤10,000。

正图不好做我们就建反图
第一问随便做就行,对于第二问,我们考虑是什么让每个点不能继续往前排
显然如果他能排到1是最好的,但是如果它排位过于靠前,有些点不能在时限内起飞,这就不合法了
反图上做拓扑排序即可
代码:
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #define M 1000001
 5 #define int long long
 6 #define mod 1000000007
 7 using namespace std;
 8 int C[M],h[M],inv[M];
 9 int read()
10 {
11     char ch=getchar();int x=0;
12     while(ch>'9'||ch<'0') ch=getchar();
13     while(ch<='9'&&ch>='0') x=x*10+ch-'0',ch=getchar();
14     return x;
15 }
16 int power(int a,int b)
17 {
18     int ans=1;
19     while(b)
20     {
21         if(b&1) ans=ans*a%mod;
22         b>>=1; a=a*a%mod;
23     }
24     return ans;
25 }
26 #undef int
27 int main()
28 {
29     #define int long long
30     int T=read();
31     C[0]=1;C[2]=1;h[0]=1;inv[0]=1;
32     for(int i=3;i<=1000000;i++) C[i]=(i-1)*(C[i-1]+C[i-2])%mod;
33     for(int i=1;i<=1000000;i++) h[i]=i*h[i-1]%mod,inv[i]=power(h[i],mod-2);
34     for(int i=1;i<=T;i++)
35     {
36         int n=read(),m=read();
37         printf("%lld\n",C[n-m]*h[n]%mod*inv[m]%mod*inv[n-m]%mod);
38     }
39     return 0;
40 }

转载于:https://www.cnblogs.com/Slrslr/p/9754780.html

[BZOJ2109]Plane 航空管制相关推荐

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

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

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

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

  3. bzoj 2535: [Noi2010]Plane 航空管制2【拓扑排序+堆】

    有个容易混的概念就是第一问的答案不是k[i]字典序最小即可,是要求k[i]大的尽量靠后,因为这里前面选的时候是对后面有影响的(比如两条链a->b c->d,ka=4,kb=2,kc=3,k ...

  4. BZOJ2535: [Noi2010]Plane 航空管制2(拓扑排序 贪心)

    题意 题目链接 Sol 非常妙的一道题. 首先不难想到拓扑排序,但是直接对原图按\(k\)从小到大拓扑排序是错的.因为当前的\(k\)大并不意味着后面的点\(k\)也大 但是在反图上按\(k\)从大到 ...

  5. BZOJ2535: [Noi2010]Plane 航空管制2

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2535 把图反向,拓扑排序一下,用并查集维护当前权值能放置的最大位置.对于第二问,就相当于我把点 ...

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

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

  7. BZOJ 2535:NOI 2010 航空管制

    [NOI2010]航空管制 题面请点上面. 首先第一问,我第一想法是把它放到一个小根堆中,然而这是不行的. 正确的思路是,把图反过来建,然后放到一个大根堆里去. 至于原因,感性理解一下,正着贪是有后效 ...

  8. BZOJ-2535 航空管制 toposort

    题目传送门 题解: 如果正着连边,可以发现最困难的点是ti不好处理. 所以我们连反边,然后将ti转换成前面有n-ti+1架飞机起飞了作为限制条件. 对于第一问,直接toposort 然后反着输出求出的 ...

  9. 青软产业项目集:航空数据管控系统项目

    大数据.人工智能.工业互联网等新兴ICT产业发展迅速,相关企业对高校毕业生的技术能力.工程实践能力.产业理解能力等也提出了较高要求.为帮助学生在步入职场时能快速适应岗位,满足企业用人需求,我们基于真实 ...

  10. 手台监听航空频段_背着带有航空波段的收音机坐飞机,例如德生PL660,能够全程监听到机组人员与地面的通话吗?...

    试过几次,分享一些经验. 可否使用:如其他答案所说,PL660只有接收功能,不能发射,应该符合无线电管理规定.民航要求起飞和降落阶段要关闭客舱所有电子设备,这时最好按规定关上收音机.在地面和巡航阶段, ...

最新文章

  1. AI基础:入门人工智能必看的论文【附下载链接】
  2. Oracle 11g下加密表空间的使用
  3. 为什么你的记忆总会越来越模糊?
  4. 物流项目宣传活动任务前台分页展示
  5. QML和C ++之间的数据类型转换---枚举
  6. 四十八、面试前,必须搞懂Java中的线程池(下篇)
  7. JVM解释器和编译器
  8. C++ 泛型编程(一):模板基础:函数模板,类模板,模板原理,模板匹配规则
  9. TensorFlow和Keras入门必读教程
  10. 30名工程师,历时1300天打造,又一“国产”AI框架开源了
  11. SpringBoot 实现接口参数加密解密功能
  12. 多线程并发思考--文件加锁
  13. python爬虫案例典型:爬取大学排名(亲测有效)
  14. 苹果工具条_如何在苹果官网获取 iOS 13 描述文件?iOS 13 公测版升级教程
  15. R-squared 和 Adjusted R-squared联系与区别
  16. Linux系统配置DNS服务器
  17. one 主格 复数 宾格_主格和宾格的区别
  18. 【转】PCM Audio,PCM格式音频文件 详解
  19. 停不下的脚步:IT高管人士的工作实录
  20. Consul arch(二) 逆熵 anti-entropy

热门文章

  1. 我家猫老喜欢和我躲猫猫,我用Python赶忙写了个猫脸检测器。在哪里都逃不出我的手心。
  2. Python学习之学校教学(辨别身份证的真伪,并判断性别)
  3. java 证书错误_java – SSL证书错误:certificate_unknown
  4. 邮件这样写,PK 掉 99% 的同事
  5. php get month,JavaScript从Date对象返回月份 (0 ~ 11)的方法getMonth()
  6. Haproxy常见的负载均衡调度算法及应用场景
  7. 网络间谍:你的共享文件夹网络监视器
  8. 电脑引导,电脑常见开机引导错误的解决方法
  9. java 字节码 机器码_Java 执行引擎(从字节码到机器码)
  10. 笔记本电脑微信视频对方却听不到声音