[ZJOJ] 5794 2018.08.10【2018提高组】模拟A组&省选 旅行
Description
Input
Output
Sample Input
Input1:
4 4
1 2 1 10
2 4 3 5
1 3 1 5
2 4 2 7
Input2:
2 2
1 2 1 3
1 2 4 6
Sample Output
Output1:
6
2 3 4 5 6 7
Output2:
3
1 2 3
Data Constraint
100%的数据 2 <= N <= 1000, 0 <= M <= 3000, 1 <= a, b <= N, 1 <= l <= r <= 10^6
题目解析
数据范围不算大,看了看题首先可以得出一个推论:答案区间一定是连续的。
所以我们只要知道区间的左右段就可以了,枚举一下就很好做了。
用并查集 + 贪心的思想,将所有边按右端点的限制大小排序,之后贪心的合并点,同时选取边,当点1和点n在同一集合内,就结束枚举,过程中记录答案。
其实有点像Kruskal的过程。
Code
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std; //1<=a , b<=N , 1<=l<=r<=1e6
const int MAXN = ;
const int MAXM = ; int n,m;
int ans,cnt,lft;
int fa[MAXN];
struct Edge {
int from,to;
int L,R;
} l[MAXM << ]; bool cmp(Edge x,Edge y) {
return x.R > y.R;
} int _find(int x) {
if(x == fa[x]) return x;
return fa[x] = _find(fa[x]);
} int _min(int x,int y) {
return x < y ? x : y;
} int _max(int x,int y) {
return x > y ? x : y;
} inline void add(int x,int y,int a,int b) {
cnt++;
l[cnt].from = x;
l[cnt].to = y;
l[cnt].L = a;
l[cnt].R = b;
return;
} inline void init_fa() {
for(int i = ;i <= n;i++) fa[i] = i;
return;
} inline void Dinic(int s,int t) {
for(int i = ;i <= m;i++) {
init_fa();
for(int j = ;j <= m;j++) {
if(l[j].L > l[i].L) continue;
fa[_find(l[j].from)] = _find(l[j].to);
if (_find()==_find(n)) {
if(l[j].R - l[i].L > ans - ) {
lft = l[i].L;
ans = l[j].R - l[i].L + ;
}
break;
}
}
}
return;
} int main() {
scanf("%d%d",&n,&m);
int x,y,a,b;
for(int i = ;i <= m;i++) {
scanf("%d%d%d%d",&x,&y,&a,&b);
add(x,y,a,b);
}
for(int i = ;i <= n;i++ ){
fa[x] = x;
}
sort(l+,l++m,cmp);
Dinic(,n);
printf("%d\n",ans);
for(int i = lft;i<=lft + ans - ;i++) {
printf("%d ",i);
}
return ;
}
[ZJOJ] 5794 2018.08.10【2018提高组】模拟A组&省选 旅行的更多相关文章
- 新手C#SQL Server使用记录2018.08.10
主键(PrimaryKey):主键就是每个数据行(记录)的唯一标识,不会有重复值的列(字段)才能当做主键.一个表可以没有主键,但是这样会很难处理表,因此一般情况表都要设置主键. 主键有两张选用策略,分 ...
- 2018.08.10【省赛&提高A组模拟】比赛总结
题解 这次题目可真是太难了! 糟糕的运气使我AK的步伐寸步难行(士气严重下降). T1 这题还是比较水的(尽管我比赛时只拿了50分) 一些大佬们说:这题只是一道简单的暴力题,枚举l+二分r 就可以了. ...
- [jzoj 5770]【2018提高组模拟A组8.6】可爱精灵宝贝 (区间dp)
传送门 Description Branimirko是一个对可爱精灵宝贝十分痴迷的玩家.最近,他闲得没事组织了一场捉精灵的游戏.游戏在一条街道上举行,街道上一侧有一排房子,从左到右房子标号由1到n. ...
- JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会
题目 Description "那么真的有果尔德施坦因这样一个人?"他问道. "是啊,有这样一个人,他还活着.至于在哪里,我就不知道了." "那么那个 ...
- 2018.08.10 atcoder No Need(线性dp)
传送门 输入一个序列an" role="presentation" style="position: relative;">anan,输入k&q ...
- 2018.08.10 atcoder Median Sum(01背包)
传送门 题意简述:输入一个数组an" role="presentation" style="position: relative;">anan. ...
- Cheatsheet: 2018 08.01 ~ 2018 10.31
Other Building the Ultimate Developer PC 3.0 - The Parts List for my new computer, IronHeart Face re ...
- 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
题目描述 在麦克雷的面前有N个数,以及一个R*C的矩阵.现在他的任务是从N个数中取出R*C个,并填入这个矩阵中.矩阵每一行的法值为本行最大值与最小值的差,而整个矩阵的法值为每一行的法值的最大值.现在, ...
- 2018.12.08【NOIP提高组】模拟B组总结(未完成)
2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...
随机推荐
- 分布式数据库中间件DDM的实现原理
随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...
- error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
[root@luozhonghua ~]# /usr/bin/mysqladmin -u root password 'aaaaaa' /usr/bin/mysqladmin: connect t ...
- 数据挖掘算法学习(八)Adaboost算法
本文不定期更新.原创文章,转载请附上链接http://blog.csdn.net/iemyxie/article/details/40423907 谢谢 Adaboost是一种迭代算法,其核心思想是针 ...
- 通过scp批量推送文件到远程目录
[root@openfire1 script]# cat test.sh #!/bin/bash #通过scp推送文件到远程目录 for ip in `cat iplist` do ...
- 【Unity】用Shader编程实现3D红心
有些形状,即使没有3D美术设计师提供模型,也能够用代码生成. 对于想保持原创性不想借用他人模型的独立开发人员来说,这无非是一个非常重要的途径. 今天献给大家的是用Shader编程实现的一颗红心,寄托下 ...
- Android之NDK开发(转载)
http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C+ ...
- vi编辑文件保存后,提示“Can't open file for writing Press ENTER or type command to continue”
在linux上使用vi命令修改或者编辑一个文件内容的时候,最后发现使用<Esc+:+wq!>无法保存退出,却出现,如下提示: E212: Can't open file for writi ...
- c3p0-config.xml文件简单说明与备忘
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <named-confi ...
- [Apple开发者帐户帮助]九、参考(2)撤销特权
您可以撤消的证书取决于证书类型和您的角色.如果您是个人注册,则可以撤销所有类型的开发和分发证书,除非另有说明.组织团队的任何成员都可以撤销自己的开发证书,但只有帐户持有人或管理员可以撤销分发证书. 证 ...
- [Apple开发者帐户帮助]八、管理档案(4)
您可以编辑,下载或删除在开发人员帐户中创建的配置文件.例如,如果您撤消了证书或禁用了配置文件中包含的设备,请编辑配置文件.或重新置备的个人资料,如果因为你它是无效的功能的应用程式服务. 注意: Xco ...