poj3553 拓扑序+排序贪心
题意:有多个任务,每个任务有需要花费的时间和最后期限,任务之间也有一些先后关系,必须先完成某个才能开始某个,对于每个任务,如果没有越期,则超时为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这道题的时候并没有想错
poj3553 拓扑序+排序贪心的更多相关文章
- BZOJ-4010 菜肴制作 贪心+堆+(拓扑图拓扑序)
无意做到...char哥还中途强势插入干我...然后据他所言,看了一会题,一转头,我爆了正解....可怕 4010: [HNOI2015]菜肴制作 Time Limit: 5 Sec Memory L ...
- 洛谷P3243 [HNOI2015]菜肴制作 拓扑排序+贪心
正解:拓扑排序 解题报告: 传送门! 首先看到它这个约束就应该要想到拓扑排序辣QwQ 首先想到的应该是用优先队列代替队列,按照节点编号排序 然后也很容易被hack:<5,1> 正解应为5, ...
- BZOJ4010 [HNOI2015]菜肴制作 【拓扑排序 + 贪心】
题目 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号为1.由于菜肴之间 ...
- BZOJ_4010_[HNOI2015]菜肴制作_拓扑排序+贪心
BZOJ_4010_[HNOI2015]菜肴制作_拓扑排序+贪心 Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜 ...
- codeforces 655D D. Robot Rapping Results Report(拓扑排序+拓扑序记录)
题目链接: D. Robot Rapping Results Report time limit per test 2 seconds memory limit per test 256 megaby ...
- [bzoj3887][Usaco2015 Jan]Grass Cownoisseur_trajan_拓扑排序_拓扑序dp
[Usaco2015 Jan]Grass Cownoisseur 题目大意:给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过?(一个点在 ...
- 【BZOJ-3832】Rally 拓扑序 + 线段树 (神思路题!)
3832: [Poi2014]Rally Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 168 Solved: ...
- poj2367 拓扑序
题意:有一些人他们关系非常复杂,一个人可能有很多后代,现在要制定一种顺序,按照前辈在后代前排列就行 拓扑序裸题,直接建边拓扑排序一下就行了. #include<stdio.h> #incl ...
- poj1094 拓扑序
题意:现在有多个大写字母(不一定连续),给出字母之间的大小关系,问到第几个关系时就能判断有唯一大小排序或出现矛盾,或是有多个合理排序,若有唯一排序,则输出它. 拓扑序,只不过坑爹的是如果关系处理到一半 ...
随机推荐
- jQuery 通用表单方法
表单验证一直是一个麻烦的事情,让很多人望而退步,之前想过一个验证的好方法,但是有bug,昨晚请教了juyling.com的王员外,顺利解决. 以下是js代码 function mySubmit ...
- 将table导出为Excel的标准无乱码写法
导出为Excel有很多种写法,对于一些复杂的格式,笔者喜欢在后台先拼成一个<table>,再使用Response输出. 如果数据中包含中文或者一些特殊字符,可很多不规范的写法都会导致页面乱 ...
- [Windows驱动]流媒体驱动开发
从Windows98开始,Windows流媒体驱动遵循Windows Driver Model(WDM)模型并使用Kernel Streaming(KS)组件.Kernel Streaming(KS) ...
- iOS中nil、Nil、NULL、NSNull详解(转)
ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interfa ...
- hdu 2045
Ps:上课的时候用iPad做的...没有调试..一次AC机.就是简单的递推... 代码: #include "stdio.h"#include "math.h" ...
- 2016-1-6第一个完整APP 私人通讯录的实现 4:编辑联系人
一:建立编辑联系人的controller,并使其拥有模型contact,且有协议.代码如下 #import <UIKit/UIKit.h> #import "contact.h& ...
- Magento怎么设置和使用Cookie和Session?
Magento中cookie和session是已经封装了的 Magento的核心对象-Mage_Core_Model_Cookie & Mage_Core_Model_Session Mage ...
- magento做手机端思路
有个插件可以检测移动设备访问,然后显示对于的手机主题这个方法最简单另外的就是调接口了这个用来做app也行不过mg的数据不是json数据,是xml速度很慢
- C++学习笔记6:多文件编程
1.添加文件到工程中: 2.函数调用时需要前向声明;以下为实例: //add.cpp int add(int x, int y) { return (x + y); } //main.cpp #inc ...
- fsutil
编号:1035时间:2016年8月29日15:41:57功能:fsutil栗子:fsutil file createnew e:\b.txt 1073741824 //创建1G文件http://www ...