考虑不断找到以下两种类型的边,并维护答案:

1.终点出度为0的边,那么此时即令$ans_{x}=\min(ans_{x},\max(r,ans_{y}-p))$​

2.(在没有"终点出度为0的边时",即优先删除第1类边)剩余边中$r$​​​​最大的边,注意到能走到的每一个点都有出边,且其限制$r$​​都更小,那么即可令$ans_{x}=\min(ans_{x},r)$​

进一步的,在维护答案后,注意到如果答案比该限制小,那么一定可以不用这条边,因此删去该边即可

关于此过程的维护,维护一个队列记录所有出度为0的点,以及将所有边先按照$r$从小到大排序即可

时间复杂度为$o(m\log m)$(排序),可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 #define oo 0x3f3f3f3f
5 struct Data{
6 int x,y,r,p;
7 bool operator < (const Data &k)const{
8 return r>k.r;
9 }
10 }e[N];
11 queue<int>q;
12 vector<int>v[N];
13 int n,m,r[N],vis[N],ans[N];
14 void del(int k){
15 vis[k]=1;
16 if (--r[e[k].x]==0)q.push(e[k].x);
17 }
18 int main(){
19 scanf("%d%d",&n,&m);
20 for(int i=1;i<=m;i++)scanf("%d%d%d%d",&e[i].x,&e[i].y,&e[i].r,&e[i].p);
21 sort(e+1,e+m+1);
22 for(int i=1;i<=m;i++){
23 r[e[i].x]++;
24 v[e[i].y].push_back(i);
25 }
26 memset(ans,oo,sizeof(ans));
27 for(int i=1;i<=n;i++)
28 if (!r[i])q.push(i);
29 for(int i=1;i<=m;i++){
30 while (!q.empty()){
31 int k=q.front();
32 q.pop();
33 for(int i=0;i<v[k].size();i++){
34 int x=v[k][i];
35 if (!vis[x]){
36 if (ans[k]!=oo)ans[e[x].x]=min(ans[e[x].x],max(e[x].r,ans[k]-e[x].p));
37 del(x);
38 }
39 }
40 }
41 if (!vis[i]){
42 ans[e[i].x]=min(ans[e[i].x],e[i].r);
43 del(i);
44 }
45 }
46 for(int i=1;i<=n;i++)
47 if (ans[i]==oo)ans[i]=-1;
48 for(int i=1;i<n;i++)printf("%d ",ans[i]);
49 printf("%d\n",ans[n]);
50 return 0;
51 }

[luogu7831]Travelling Merchant的更多相关文章

  1. ACM: 限时训练题解- Travelling Salesman-最小生成树

    Travelling Salesman   After leaving Yemen, Bahosain now works as a salesman in Jordan. He spends mos ...

  2. Codeforce - Travelling Salesman

    After leaving Yemen, Bahosain now works as a salesman in Jordan. He spends most of his time travelli ...

  3. [最近公共祖先] POJ 3728 The merchant

    The merchant Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 4556   Accepted: 1576 Desc ...

  4. POJ 3278 The merchant

    传送门 Time Limit: 3000MS Memory Limit: 65536K Description There are N cities in a country, and there i ...

  5. Travelling

    Travelling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. URAL 1077 Travelling Tours(统计无向图中环的数目)

    Travelling Tours Time limit: 1.0 secondMemory limit: 64 MB There are N cities numbered from 1 to N ( ...

  7. HDU-3001 Travelling

    http://acm.hdu.edu.cn/showproblem.php?pid=3001 从任何一个点出发,去到达所有的点,但每个点只能到达2次,使用的经费最小.三进制 Travelling Ti ...

  8. Bzoj 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 动态规划

    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1006  Solved: ...

  9. BZOJ1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛

    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 762  Solved:  ...

随机推荐

  1. 前端规范之Git工作流规范(Husky + Comminilint + Lint-staged)

    代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...

  2. java/ kotlin下的单例模式

    单例模式属于创建型模式, 顾名思义,就是说整个系统中只有一个该对象的实例. 为什么要使用单例模式? 1, 对于一些需要频繁创建,销毁的对象, 使用单例模式可以节省系统资源 2, 对于全局持有的对象,单 ...

  3. T-SQL——函数——字符串操作函数

    目录 0. 加号(+) 1. LEFT和RIGHT 2. SUBSTRING 3. LEN和DATALENGTH 4. CHARINDEX和PATINDEX 5. REPLACE 6. REPLICA ...

  4. 演员 Or 开发者的自我修养

    演员 Or 开发者的自我修养 时至今日,我都还是很怀念小时候与一群玩伴编写剧本.拍摄,那时候的我还有一个远大的"白日梦"--成为一名导演.很可惜,终究是"白日梦" ...

  5. python单例模式设计

    class MyTest(): my_obj = None def __new__(cls,*args,**kwargs): if not cls.my_obj: cls.my_obj =object ...

  6. .Net微信服务商平台ApiV3接口

    最近做个对接微信服务商平台的小程序项目,大概要实现的流程是:a)特约商户进件 > b)生成带参数的小程序码 > c)小程序支付 > d)分账,记录一下,希望能对需要的朋友有所帮助 开 ...

  7. csp-j 复赛感想

    作者:博客园小蔡编程 这次是作者第一次参加csp-j的比赛 内心还是挺激动的 今天,作者就来和大家讨论一下这次csp-j的学习心得和感想 T1 分糖果 这题描述看似复杂 其实就是一道求最大取模的题 L ...

  8. django通过管理页上传图片

    1.配置目录 新建上传录.static/medis 2.设置上传文件保存路径 # setting.py中设置上传文件路径static/media MEDIA_ROOT = os.path.join(B ...

  9. 轻量级 Java 基础开发框架,Solon & Solon Cloud 1.5.52 发布

    Solon 已有120个生态扩展插件,此次更新主要为细节打磨: 插件 mybatis-solon-plugin 增加 mappers 单行配置支持 之前的多行模式: mybatis.db1: type ...

  10. elasticsearch的索引操作

    1.创建索引(test_index) curl -XPUT "http://192.168.99.1:9200/test_index" 2.创建索引,指定分片和副本的数量 curl ...