题意:有多个任务,每个任务有需要花费的时间和最后期限,任务之间也有一些先后关系,必须先完成某个才能开始某个,对于每个任务,如果没有越期,则超时为0,否则超时为结束时间-最后期限,求超时时间最大值最小的任务顺序。

由于完成这些任务的总时间是一样的,所以只要贪心地尽量取结束时间早的先做就行,只不过加上了拓扑序的限制,就将任务按结束时间排大小,拓扑序做就行了。

 #include<stdio.h>
#include<string.h>
#include<queue>
using namespace std; const int maxn=5e4+;
const int maxm=5e5+; struct job{
int p,d,id,num;
bool operator < (const job a)const{
return d<a.d;
}
}w[maxn]; int head[maxn],point[maxm],nxt[maxm],size;
int n; void init(){
memset(w,,sizeof(w));
memset(head,-,sizeof(head));
size=;
for(int i=;i<=n;++i)w[i].num=i;
} void add(int a,int b){
point[size]=b;
nxt[size]=head[a];
head[a]=size++;
w[b].id++;
} void topo(){
priority_queue<job>q;
for(int i=;i<=n;++i)if(!w[i].id)q.push(w[i]);
while(!q.empty()){
job u=q.top();
q.pop();
int s=u.num;
printf("%d\n",s);
for(int i=head[s];~i;i=nxt[i]){
int j=point[i];
w[j].id--;
if(!w[j].id)q.push(w[j]);
}
}
} int main(){
while(scanf("%d",&n)!=EOF){
init();
for(int i=;i<=n;++i){
scanf("%d%d",&w[i].p,&w[i].d);
}
int m;
scanf("%d",&m);
while(m--){
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
}
topo();
}
return ;
}

之前写的是总超时时间最小的任务顺序……其实笔误了,不过并没有人告知23333自己后来看的时候才发现写错了,不过A这道题的时候并没有想错

最新文章

  1. DataGrid中的事件和方法
  2. 许愿墙的搭建(基于Apache+php+mysql)
  3. 【HOW】如何对Reporting Services表格中数据按字段排序
  4. oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题
  5. [AC自动机]题目合计
  6. C#学习笔记14:面向对象继承的特点和里氏转换
  7. Android - 消息机制与线程通信
  8. jsonarray-----&gt;list
  9. UI-- Empty Application 新建空工程
  10. office漏洞利用--获取shell
  11. 杭电ACM2004--成绩转换
  12. matplotlib.mlab库的重要函数
  13. Tomcat 一般异常处理方式
  14. 使用Mongoose类库实现简单的增删改查
  15. 第13课 lambda表达式
  16. Git-工作区和暂存区的概念
  17. [css3] 看博客学习别人的旋转的星球
  18. linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent【转】
  19. 20155202 张旭 课下作业: Linux下IPC机制
  20. docker 建立私有仓库,24.205为镜像仓库所在主机

热门文章

  1. ASP.NET MVC4 &amp; Entity Framework 6.0 IIS 部署出错解决方案
  2. objective-c strong导致内存泄漏简单案例
  3. Javascript 基础--JS函数(三)
  4. 《day12---异常》
  5. poj1651 区间dp
  6. WABAPI使用
  7. 进行以上Java编译的时候,出现unmappable character for encoding GBK。
  8. 算法----Magic Index
  9. R函数是对A方法的封装
  10. python3爬虫初探(四)之文件保存