题意

给定一张有 nnn 个节点,mmm 条边的无向图(可能有环或重边),对于每个节点 iii,有 lil_ili​ 和 rir_iri​,定义在经过该节点后,只能携带于 lil_ili​ 和 rir_iri​ 之间的数。

从编号为 1 的节点出发(初始时携带了所有自然数),到达编号为 nnn 的节点,求最后能携带最多的节点。

若节点数相同,输出字典序小的那一组。

若节点数为 0,输出 Nice work, Dima!

题解

模拟赛的一道题。

二分 + 图。

二分本质:

在数轴上找到一个临界点,即点的左边都可以满足条件,右边都不可以满足条件(或左边不可以,右边可以)。

在这道题中,r 值是有单调性的。即有一临界点,使得比它小的 r 值无法满足,比它大的 r 值可以满足。

但是,l 不具有单调性。例如,当 l 值为 1 时可以满足,l 值为 5 时可以满足,但是 l 值为 3 时能否满足是无法直接断定的。

所以,r 的值可以通过二分得到,l 的值只能枚举而得。

以上是思路。

但实现的时候我们可以用并查集优化:

我们从小到大枚举 l 的值,在此基础上,我们按 r 的值从大到小枚举每一条边。

保证每一条使用了的边的 ei.le_i.lei​.l 的值比当前枚举的 l 的值小。

这里就运用了二分的思想。

每用一条边,就用并查集维护,如果 f1=fnf_1 = f_nf1​=fn​,就记录答案,最终输出最佳答案即可。

代码

#include<bits/stdc++.h>
using namespace std;#define rint register int
const int inf = 1e6 + 5, maxn = 1005;
int n, m;
int cnt, hd[maxn];
struct node{int s, t;int l, r;
}e[maxn * 4];
int f[maxn];
int ansl, num;
int recl[maxn * 4];inline int read ()
{int x = 1, s = 0;char ch = getchar ();while (ch < '0' or ch > '9'){if (ch == '-') x = -1; ch = getchar ();}while (ch >= '0' and ch <= '9') s = s * 10 + ch - '0', ch = getchar ();return x * s;
}inline bool cmp (node a, node b)
{return a.r == b.r ? a.l < b.l : a.r > b.r;
}inline void init ()
{for (rint i (1); i <= n; ++i) f[i] = i;
}inline int find (int x)
{return f[x] == x ? x : find (f[x]);
}int main ()
{n = read (), m = read ();for (rint i (1); i <= m; ++i) e[i].s = read (), e[i].t = read (), e[i].l = read (), e[i].r = read (), recl[i] = e[i].l;sort (e + 1, e + m + 1, cmp);sort (recl + 1, recl + m + 1);for (rint i (1); i <= m; ++i){init ();bool flag = 0;int tl = recl[i], tr = inf;for (rint j (1); j <= m; ++j){if (e[j].l > tl) continue;int u = find (e[j].s), v = find (e[j].t);if (u != v){f[u] = v;tr = min (tr, e[j].r);if (find (1) == find (n)) {flag = 1;break;}}}if (flag and num < tr - tl + 1) ansl = tl, num = tr - tl + 1;}if (num == 0){printf ("Nice work, Dima!");return 0;}printf ("%d\n", num);return 0;
}

CF366D Dima and Trap Graph 题解相关推荐

  1. D - 8 Puzzle on Graph题解

    atcoder上的一题,感觉挺有意思的就写一下题解,别问我为什么当时没做出来,因为我C题(暴力枚举判断三角形)写爆了,*****,掉大分. 题目链接:D - 8 Puzzle on Graph (at ...

  2. czl蒻蒟的OI之路10、11、12

    好久没有发微博了表示自己也很绝望啊今天来个三连击 XJOI奋斗群蒻蒟群群赛11 RANK排名11 T1The Wall WA一次后AC 题意 分析过程 给出题解 T2Maximal Area Quad ...

  3. Codeforces 题目合集+分类+代码 【Updating...】【361 in total】

    961A - Tetris                                                模拟                                      ...

  4. 『题解』LibreOJ #563. Snakes 的 Naïve Graph

    #563. 「LibreOJ Round #10」Snakes 的 Naïve Graph Description 有一张二分图 G(m)G(m)G(m),其中有 (m−1)(m - 1)(m−1) ...

  5. 【最短路】Graph practice T2 drive 题解

    Problem 2. drive Input file: drive.in Output file: drive.out Time limit: 2 second 工头cky 最近开了一家贸易公司,开 ...

  6. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  7. 2017 ACM ICPC Asia Shenyang Regional Contest 题解(10 / 13)【每日亿题2 / 16】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A.(2017 ICPC shenyang I)Little Boxes B.(2017 ICP ...

  8. HDU 6090 Rikka with Graph

    Rikka with Graph 思路: 官方题解: 代码: #include<bits/stdc++.h> using namespace std; #define ll long lo ...

  9. Codeforces 724 G Xor-matic Number of the Graph 线性基+DFS

    G. Xor-matic Number of the Graph http://codeforces.com/problemset/problem/724/G 题意:给你一张无向图.定义一个无序三元组 ...

最新文章

  1. 启动计算机加密码,电脑给硬盘设置启动密码加密的方法
  2. 前端测试简述及使用Karma/Mocha实现的集成测试栗子(Travis CI/Coverage)
  3. mysql 输出当前月所有日期与对应的星期
  4. Vs2010 MFC 简单制作过程中的问题
  5. Knative 多容器支持介绍
  6. linux服务器怎么防,Linux服务器防攻击的各种方案
  7. 网友评论:Struts漏洞为什么来势凶猛
  8. 关于id Tech5的MegaTexture技术
  9. SharePoint 权限提升(SPSecurity)
  10. Python基本输出函数print()用法小结
  11. ids和ips主要区别在于_接口测试和功能测试的区别
  12. 机器学习回归问题解答
  13. SkyWalking加入Apache孵化器
  14. Struts中ActionActionForm
  15. IsKindOf的用法简介
  16. ESP8266串口透传+WiFi储存+OTA+smartconfig/airkiss
  17. 关于OSGI中的Felix热插拔技术
  18. 思维模型 第一性原理
  19. UE4在Android平台调试
  20. 网站学习心得-登陆注册功能

热门文章

  1. 萧乾升:3.25黄金白银TD实时最新行情走势分析
  2. 量化投资常用技能——指标篇3:详解RSI指标,及其代码实现和绘图
  3. Redhat6.5离线配置Zabbix,含自定义Zabbix监控项
  4. CMA实验室盲样考核,如何控制质量?
  5. Python编程:从入门到实践 课后习题-第十一章 测试代码
  6. hashmap扩容过程,字节大神强推千页PDF学习笔记,经典好文
  7. 磁链观测器结合霍尔传感器转子角度方案
  8. 胆囊有排毒鸿蒙那,胆生病,别怕!身上有反射区,专“治”胆病,结石、炎症绕道走...
  9. IT行业应届毕业生的简历改怎么写?
  10. java计算机毕业设计教学质量测评系统源码+系统+lw+数据库+调试运行