清华计算机考研复试机试,清华大学历年考研复试机试真题 - 论文
题目描述
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
清华计算机考研复试机试,清华大学历年考研复试机试真题 - 论文相关推荐
- 考研:中国科学院地理所历年GIS研究生入学考试真题汇总
中科院地理所1997年GIS研究生入学试题 一.名词解释 1.拓扑关系 2.缓冲分析 3.关系数据模型 4.空间叠加 二.简答题 1.GIS的主要功能略 ...
- 中科大2021年考研计算机报录比,2021考研:30所高校历年考研报录比汇总
21 南京大学 2003年-2019年报考录取数据: http://grawww.nju.edu.cn/912/list1.htm 22 东北大学 2011年-2018年报考录取数据: http:// ...
- 长安大学微型计算机原理与接口技术答案,长安大学考研专业课《815微机原理与接口技术》真题解析 考点 冲刺.pdf...
长安大学考研专业课<815微机原理与接口技术>真题解析 考点 冲刺 [键入文字] 1 2008 年真题 长安大学 2008 年硕士研究生入学 考试试题 试题名称:微机原理与接口技术 一.填 ...
- 全国计算机建模三等奖,2009年全国数学建模真题(论文获国家 三等奖).doc
2009年全国数学建模真题(论文获国家 三等奖) 制动器试验台的控制方法分析 摘要 制动器的作用在于使行驶减速或者停止,其设计是车辆设计中最重要的环节之一,直接影响着人身和车辆的安全.本文分析了制动器 ...
- 2017年计算机二级考试的word的答案,2017年3月全国计算机考试等级考试二级《MS Office高级应用》真题及答案...
2017年3月全国计算机考试等级考试二级 <MS Office高级应用>真题 (总分100, 考试时间90分钟) 1. [背景素材]办事员小李需要整理一份有关高新技术企业的政策文件呈送给总 ...
- NOIP历年第二轮入门组真题集合
NOIP历年第二轮入门组真题集合 年份 题目 题解链接 2000 T1-计算器的改良 T2- 税收与补贴问题 T3-乘积最大 T4-单词接龙 题解链接 2001 T1-数的记数 T2-最大公约数和最小 ...
- 蓝桥杯历年省赛JAVA-B组真题汇总及题目详解
蓝桥杯 历年省赛JAVA-B组真题汇总及题目详解 题目大致介绍: 第一题到第三题以及第六题是结果填空,方法不限得到最后结果就行. 第四题和第五题是代码填空题,主要考察算法基本功和编程基本功. 第八题到 ...
- 【考研】串的模式匹配算法——KMP算法(含真题)
前言 本文内容源于对<数据结构(C语言版)>(第2版).王道讲解学习所得心得.笔记整理和总结,以便复习. 可搭配以下链接一起学习: [考研]<数据结构>知识点总结.pdf_考研 ...
- 清华计算机本科待遇,2021年清华大学报考信息出炉 计算机专业最吃香
2021年清华大学的报考信息出炉了,据了解,计算机专的报考人数最多,其次就是社会科学专业.软件工程专业.自动化专业等. 清华大学报考信息出炉 清华大学报考信息公布,计算机报考人数最多 在清华大学诸多专 ...
最新文章
- 美国《时代》周刊公布年度25大最佳发明名单
- 总监调岗至前台,企业被判赔偿26万,法院:“侮辱性调岗”违法!
- SringIOC中Bean的后置处理器
- QList模板类常用接口函数
- [LeetCode] 1091. Shortest Path in Binary Matrix
- 数据竞赛:记录3天进入比赛Top3%的全过程
- 让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析
- 从DUMP函数说开去
- 【数据结构与算法】之深入解析“股票的最大利润”的求解思路与算法示例
- Windows下安装Mysql5.7.22以及遇到的问题 + 数据库连接工具Navicat
- C++:05---class和struct
- Spring自学日志07(整合Mybatis)
- python列表中item_del(item)与列表.删除(item)在python lis中
- Java Spring 异常处理
- android 编译c代码吗,在Android手机上编译C代码
- 关于wps公式编辑器的大括号里面空白很大
- 如何使用RDP报表工具预览页面可以出现完整数据而不是只显示一条
- OpenDaylight Hydrogen版本应用SampleTap研究(一)
- 程序员阶段性成长的自我总结
- Android中.this的意思