传送门

题意简述:给出一张DAGDAGDAG,要求删去不超过kkk条边问最后拓扑序的最大字典序是多少。


思路:贪心帮当前不超过删边上限且权值最大的点删边,用线段树维护一下每个点的入度来支持查询即可。

注意要在选点的时候更新后继的入度

代码:

#include<bits/stdc++.h>
#define ri register int
using namespace std;
inline int read(){
	int ans=0;
	char ch=getchar();
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
	return ans;
}
const int N=1e5+5,inf=1e9;
int n,m,k,du[N];
bool vis[N];
vector<int>e[N],ans[N];
namespace SGT{
	#define lc (p<<1)
	#define rc (p<<1|1)
	#define mid (T[p].l+T[p].r>>1)
	struct Node{int l,r,mn;}T[N<<2];
	inline void pushup(int p){T[p].mn=min(T[lc].mn,T[rc].mn);}
	inline void build(int p,int l,int r){
		T[p].l=l,T[p].r=r;
		if(l==r){T[p].mn=du[l];return;}
		build(lc,l,mid),build(rc,mid+1,r),pushup(p);
	}
	inline void update(int p,int k){
		if(T[p].l==T[p].r){T[p].mn=du[T[p].l];return;}
		k<=mid?update(lc,k):update(rc,k),pushup(p);
	}
	inline int query(int p,int k){
		if(T[p].l==T[p].r)return T[p].l;
		return T[rc].mn<=k?query(rc,k):query(lc,k);
	}
}
int main(){
	while(~scanf("%d%d%d",&n,&m,&k)){
		for(ri i=1;i<=n;++i)e[i].clear(),du[i]=0;
		for(ri i=1,u,v;i<=m;++i)u=read(),v=read(),e[u].push_back(v),++du[v];
		SGT::build(1,1,n);
		for(ri i=1;i<=n;++i){
			int x=SGT::query(1,k);
			k-=du[x],du[x]=inf,SGT::update(1,x);
			for(ri i=0,v;i<e[x].size();++i)if(du[v=e[x][i]]^inf)--du[v],SGT::update(1,v);
			if(i==n)cout<<x<<'\n';
			else cout<<x<<' ';
		}
	}
	return 0;
}

2019.01.22 hdu5195 DZY Loves Topological Sorting(贪心+线段树)的更多相关文章

  1. 2019.01.22 bzoj3333: 排队计划(逆序对+线段树)

    传送门 题意简述:给出一个序列,支持把ppp~nnn中所有小于等于apa_pap​的'扯出来排序之后再放回去,要求动态维护全局逆序对. 思路:我们令fif_ifi​表示第iii个位置之后比它大的数的个 ...

  2. hdu.5195.DZY Loves Topological Sorting(topo排序 && 贪心)

    DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 ...

  3. hdu 5195 DZY Loves Topological Sorting (拓扑排序+线段树)

    DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 ...

  4. hdu 5195 DZY Loves Topological Sorting 线段树+拓扑排序

    DZY Loves Topological Sorting Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/sho ...

  5. hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]

    传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131 ...

  6. codeforces 446C DZY Loves Fibonacci Numbers 数论+线段树成段更新

    DZY Loves Fibonacci Numbers Time Limit:4000MS     Memory Limit:262144KB     64bit IO Format:%I64d &a ...

  7. Codeforces 446C —— DZY Loves Fibonacci Numbers(线段树)

    题目:DZY Loves Fibonacci Numbers 题意比較简单,不解释了. 尽管官方的题解也是用线段树,但还利用了二次剩余. 可是我没有想到二次剩余,然后写了个感觉非常复杂度的线段树,还是 ...

  8. HDU 5195 - DZY Loves Topological Sorting

    题意: 删去K条边,使拓扑排序后序列字典序最大 分析: 因为我们要求最后的拓扑序列字典序最大,所以一定要贪心地将标号越大的点越早入队.我们定义点i的入度为di. 假设当前还能删去k条边,那么我们一定会 ...

  9. HDU 5195 DZY Loves Topological Sorting 拓扑排序

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5195 bc(中文):http://bestcoder.hdu.edu.cn/contests ...

随机推荐

  1. JS函数入门

    一. 函数的声明及调用 * 1函数的格式:function 函数名(参数1,参数2......){ * //函数体 * return 结果: * * } * 函数调用的格式: * 直接调用:函数名(参 ...

  2. 【git】gitignore

    gitignore git专门有个文件用来管理那些不被纳入版本库的文件,这个文件是 [.gitignore],所有不被包含的都能放进去,但这个是有前提的. 前提 前提是文件如果没被git客户端trac ...

  3. 总结函数open与fopen的区别

    转自:https://www.zybuluo.com/yiltoncent/note/87461 对于这两个名字很类似的函数,对于很多初学者来说,不容易搞清楚它们有什么不同,只知道按照函数用法使用.如 ...

  4. swift4.2 - 距离传感器

    import UIKit class ViewController: UIViewController { deinit { NotificationCenter.default.removeObse ...

  5. linux详解sudoers

    sudo使用 Linux是多用户多任务的操作系统, 共享该系统的用户往往不只一个.出于安全性考虑, 有必要通过useradd创建一些非root用户, 只让它们拥有不完全的权限; 如有必要,再来提升权限 ...

  6. JFinal Web开发学习(五)注册界面和后端验证

    效果: 直接点击注册后 : 后端验证是可靠地,前端js验证是不可靠的.只需要在浏览器删除js验证代码即可突破js验证. 1.注册界面 在WebRoot下新建regist.jsp <%@ page ...

  7. EntityFramework的linq扩展where

    代码 using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; ...

  8. 面试题集锦;有关作用域和this的指向

    作用域面试题: 1. fn() function fn () { console.log(12) } var as = function () { console.log(45) } 2. var a ...

  9. Linux驱动之建立一个hello模块

    目标:在开发板上执行insmod hello.ko能在控制台打印出hello init:接着执行rmmod会在控制台打印出hello exit 建立一个hello模块的步骤如下: 1.建立一个hell ...

  10. 深入理解HTTP协议及原理分析

    1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和 ...