题目描述

Time Limit: 1000 ms

Memory Limit: 256 mb

小H为了完成一篇论文,一共要完成n个实验。其中第i个实验需要ai的时间去完成。

小H可以同时进行若干实验,但存在一些实验,只有当它的若干前置实验完成时,才能开始进行该实验。

同时我们认为小H在一个实验的前置实验都完成时,就能马上开始该实验。

为了让小H尽快完成论文,需要知道在最优的情况下,最后一个完成的实验什么时候完成?

小H还想知道,在保证最后一个实验尽快完成的情况下(即保证上一问的答案不变),他想知道每个实验最晚可以什么时候开始。

设第i个实验最早可能的开始时间为fi,不影响最后一个实验完成时间的最晚开始时间为gi,请你回答

除以10^9+7所得的余数。

题目保证有解。

输入输出格式

输入描述:

从标准输入读入数据。

第一行输入一个整数n,m。

第二行输入n个正整数,a1,a2,…an,描述每个实验完成所需要的时间。

接下来读入m行,每行读入两个整数u,v,表示编号为u的实验是编号为v的实验的前置实验。

对于所有的输入数据,都满足1<=n<=10^5, 1<=m<=5*10^5, 1<=ai<=10^6。

输出描述:

输出到标准输出。

第一行输出一个整数表示最晚完成的实验的时间。

第二行输出一个整数表示除以10^9+7所得的余数。

输入输出样例

输入样例#:

复制

7 5

11 20 17 10 11 17 17

5 4

6 1

7 3

2 4

2 1

输出样例#:

复制

3 4

7840

提示

第一个点最早开始时间为20,最晚开始时间为23。

第二个点最早开始时间为0,最晚开始时间为3。

第三个点最早开始时间为17,最晚开始时间为17。

第四个点最早开始时间为20,最晚开始时间为24。

第五个点最早开始时间为0,最晚开始时间为13。

第六个点最早开始时间为0,最晚开始时间为6。

第七个点最早开始时间为0,最晚开始时间为0。

题目来源

清华大学2019年机试题

//本题相当于计算关键路径 但比关键路径简单

//没有生成拓扑序列和逆拓扑序列 而是直接求了

#include

#include

#include

typedef struct test{

int indegree;

int outdegree;

int beg;

int end;

int cost;

}test;

#define INF 0x3f3f3f3f

#define vMAX 100001

#define mod 1000000007

#define max(a,b) ((a)>(b)?(a):(b))

#define min(a,b) ((a)

//不能直接开这么大的数组

//int mp[vMAX][vMAX];

//test v[vMAX];

//int vis[vMAX];

int main(){

int n,m,i,j,k,a,b,f=0,t,late=0;

long sum=1;//要用long 不然会超

scanf("%d %d",&n,&m);

int mp[n+1][n+1];

test v[n+1];

int vis[n+1];

//初始化

memset(mp,INF,sizeof(mp));

for(i=1;i<=n;i++){

v[i].indegree=v[i].outdegree=v[i].beg=v[i].cost=0;

v[i].end=INF;

}

//输入

for(i=1;i<=n;i++) scanf("%d",&v[i].cost);

for(i=0;i

scanf("%d %d",&a,&b);

mp[a][b]=1;

v[a].outdegree++;

v[b].indegree++;

}

测试输入情况

//for(i=1;i<=n;i++) printf("i=%d,in=%d,out=%d\n",i,v[i].indegree,v[i].outdegree);

//计算所有顶点的最早开始时间 可以先生成拓扑序列再做

//测试是否有环的那步有问题 会导致死循环好像 本题肯定无环 所以可以忽略

k=n;

memset(vis,0,sizeof(vis));

while(k>0){

for(i=1;i<=n;i++){

if(v[i].indegree==0 && vis[i]==0){

k--;

vis[i]=1;

for(j=1;j<=n;j++){

if(mp[i][j]==1 && vis[j]==0){

v[j].indegree--;

v[j].beg=max(v[j].beg,v[i].beg+v[i].cost);

if(v[j].beg+v[j].cost>late){//最晚完成的实验的时间

late=v[j].beg+v[j].cost;

t=j;

}

}

}

//break;

}

}

//if(i==n){//有环

//f=1;

//break;

//}

}

//计算所有顶点的最晚开始时间 可以先生成逆拓扑序列再做

for(i=1;i<=n;i++){

if(v[i].outdegree==0) v[i].end=late-v[i].cost;

}

k=n;

memset(vis,0,sizeof(vis));

while(k>0){

for(i=1;i<=n;i++){

if(v[i].outdegree==0 && vis[i]==0){

k--;

vis[i]=1;

for(j=1;j<=n;j++){

if(mp[j][i]==1 && vis[j]==0){

v[j].outdegree--;

v[j].end=min(v[j].end,v[i].end-v[j].cost);

}

}

}

//break;

}

//if(i==n) break;

}

if(f==0){

printf("%d\n",late);

for(i=1;i<=n;i++){

sum*=(v[i].end-v[i].beg+1);

sum%=mod;

}

printf("%ld",sum);

}

else printf("No solution, have cycle");

return 0;

}

标签:真题,int,开始,实验,复试,时间,完成,机试,define

来源: https://blog.csdn.net/weixin_49548350/article/details/114292252

清华计算机考研复试机试,清华大学历年考研复试机试真题 - 论文相关推荐

  1. 考研:中国科学院地理所历年GIS研究生入学考试真题汇总

    中科院地理所1997年GIS研究生入学试题 一.名词解释  1.拓扑关系       2.缓冲分析        3.关系数据模型      4.空间叠加 二.简答题  1.GIS的主要功能略     ...

  2. 中科大2021年考研计算机报录比,2021考研:30所高校历年考研报录比汇总

    21 南京大学 2003年-2019年报考录取数据: http://grawww.nju.edu.cn/912/list1.htm 22 东北大学 2011年-2018年报考录取数据: http:// ...

  3. 长安大学微型计算机原理与接口技术答案,长安大学考研专业课《815微机原理与接口技术》真题解析 考点 冲刺.pdf...

    长安大学考研专业课<815微机原理与接口技术>真题解析 考点 冲刺 [键入文字] 1 2008 年真题 长安大学 2008 年硕士研究生入学 考试试题 试题名称:微机原理与接口技术 一.填 ...

  4. 全国计算机建模三等奖,2009年全国数学建模真题(论文获国家 三等奖).doc

    2009年全国数学建模真题(论文获国家 三等奖) 制动器试验台的控制方法分析 摘要 制动器的作用在于使行驶减速或者停止,其设计是车辆设计中最重要的环节之一,直接影响着人身和车辆的安全.本文分析了制动器 ...

  5. 2017年计算机二级考试的word的答案,2017年3月全国计算机考试等级考试二级《MS Office高级应用》真题及答案...

    2017年3月全国计算机考试等级考试二级 <MS Office高级应用>真题 (总分100, 考试时间90分钟) 1. [背景素材]办事员小李需要整理一份有关高新技术企业的政策文件呈送给总 ...

  6. NOIP历年第二轮入门组真题集合

    NOIP历年第二轮入门组真题集合 年份 题目 题解链接 2000 T1-计算器的改良 T2- 税收与补贴问题 T3-乘积最大 T4-单词接龙 题解链接 2001 T1-数的记数 T2-最大公约数和最小 ...

  7. 蓝桥杯历年省赛JAVA-B组真题汇总及题目详解

    蓝桥杯 历年省赛JAVA-B组真题汇总及题目详解 题目大致介绍: 第一题到第三题以及第六题是结果填空,方法不限得到最后结果就行. 第四题和第五题是代码填空题,主要考察算法基本功和编程基本功. 第八题到 ...

  8. 【考研】串的模式匹配算法——KMP算法(含真题)

    前言 本文内容源于对<数据结构(C语言版)>(第2版).王道讲解学习所得心得.笔记整理和总结,以便复习. 可搭配以下链接一起学习: [考研]<数据结构>知识点总结.pdf_考研 ...

  9. 清华计算机本科待遇,2021年清华大学报考信息出炉 计算机专业最吃香

    2021年清华大学的报考信息出炉了,据了解,计算机专的报考人数最多,其次就是社会科学专业.软件工程专业.自动化专业等. 清华大学报考信息出炉 清华大学报考信息公布,计算机报考人数最多 在清华大学诸多专 ...

最新文章

  1. 美国《时代》周刊公布年度25大最佳发明名单
  2. 总监调岗至前台,企业被判赔偿26万,法院:“侮辱性调岗”违法!
  3. SringIOC中Bean的后置处理器
  4. QList模板类常用接口函数
  5. [LeetCode] 1091. Shortest Path in Binary Matrix
  6. 数据竞赛:记录3天进入比赛Top3%的全过程
  7. 让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析
  8. 从DUMP函数说开去
  9. 【数据结构与算法】之深入解析“股票的最大利润”的求解思路与算法示例
  10. Windows下安装Mysql5.7.22以及遇到的问题 + 数据库连接工具Navicat
  11. C++:05---class和struct
  12. Spring自学日志07(整合Mybatis)
  13. python列表中item_del(item)与列表.删除(item)在python lis中
  14. Java Spring 异常处理
  15. android 编译c代码吗,在Android手机上编译C代码
  16. 关于wps公式编辑器的大括号里面空白很大
  17. 如何使用RDP报表工具预览页面可以出现完整数据而不是只显示一条
  18. OpenDaylight Hydrogen版本应用SampleTap研究(一)
  19. 程序员阶段性成长的自我总结
  20. Android中.this的意思

热门文章

  1. 35个强大的UI设计教程
  2. 海康web3.2无插件开发指北
  3. java android 打地鼠_android实现打地鼠游戏
  4. 【AR-1】安装Unity+注册Vuforia,以及在Unity中导入Vuforia
  5. Rapidly-Exploring Random Trees(RRT)
  6. 我是如何从汇编语言脑残粉转变的
  7. 完善跨境金融区块链服务平台,支持区域开放创新和特殊区域建设
  8. 一个搜狗打字法老客户的心得
  9. 【历史上的今天】3 月 19 日:图灵奖人工智能先驱诞生;微软发布 IE8;Android Auto 上线
  10. PAP和CHAP协议介绍