[jzoj 5177] [NOIP2017提高组模拟6.28] TRAVEL 解题报告 (二分)
题目链接:
https://jzoj.net/senior/#main/show/5177
题目:

题解:
首先选出的泡泡怪一定是连续的一段 L,R
然后 L 一定属于虫洞左边界中的某一个 R 也同样是这样的
这样就可以枚举 L 和 R,$O(N)$判断是否可行(显然不可能重复经过某个点),总复杂度 $O(NM^2)$
我们看到 R<=1e6 选择二分 R 而不是枚举,这样就可以了
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std; const int N=1e3+;
const int M=3e3+;
const int inf=1e6;
int n,m,tot;
int head[N],L[M],vis[N];
struct EDGE{
int to,nxt,l,r;
}edge[M<<];
inline int read(){
char ch=getchar();int s=,f=;
while (ch<''||ch>'') {if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
void link(int u,int v,int l,int r){
edge[++tot]=(EDGE){v,head[u],l,r};
head[u]=tot;
}
bool dfs(int x,int l,int r)
{
if (x==n) return ;
if (vis[x]) return ;
vis[x]=;
for (int i=head[x];i;i=edge[i].nxt)
{
if (edge[i].l<=l&&edge[i].r>=r)
{
if (dfs(edge[i].to,l,r)) return ;
}
}
return ;
}
bool check(int l,int r)
{
memset(vis,,sizeof(vis));
if (dfs(,l,r)) return ;
return ;
}
int main()
{
n=read();m=read();
for (int i=,u,v,l,r;i<=m;i++){
u=read();v=read();l=read();r=read();
link(u,v,l,r);link(v,u,l,r);
L[i]=l;
}
sort(L+,L++m);
int ans=,al,ar;
for (int i=m;i;i--){
int l=L[i],r=inf;
while (l+<r)
{
int mid=l+r>>;
if (check(L[i],mid))
{
if (mid-L[i]+>=ans)
{
ans=mid-L[i]+;
al=L[i];ar=mid;
}
l=mid;
}
else r=mid;
}
}
printf("%d\n",ans);
for (int i=al;i<=ar;i++) printf("%d ",i);
return ;
}
[jzoj 5177] [NOIP2017提高组模拟6.28] TRAVEL 解题报告 (二分)的更多相关文章
- [jzoj 5178] [NOIP2017提高组模拟6.28] So many prefix? 解题报告(KMP+DP)
题目链接: https://jzoj.net/senior/#main/show/5178 题目: 题解: 我们定义$f[pos]$表示以位置pos为后缀的字符串对答案的贡献,答案就是$\sum_{i ...
- [JZOJ 5852] [NOIP2018提高组模拟9.6] 相交 解题报告 (倍增+LCA)
题目链接: http://172.16.0.132/senior/#main/show/5852 题目: 题目大意: 多组询问,每次询问树上两条链是否相交 题解: 两条链相交并且仅当某一条链的两个端点 ...
- [JZOJ5178]【NOIP2017提高组模拟6.28】So many prefix?
Description
- nowcoder(牛客网)提高组模拟赛第一场 解题报告
T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check ...
- JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift
5184. [NOIP2017提高组模拟6.29]Gift (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- JZOJ 5196. 【NOIP2017提高组模拟7.3】B
5196. [NOIP2017提高组模拟7.3]B Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- JZOJ 5197. 【NOIP2017提高组模拟7.3】C
5197. [NOIP2017提高组模拟7.3]C Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- JZOJ 5195. 【NOIP2017提高组模拟7.3】A
5195. [NOIP2017提高组模拟7.3]A Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence
5185. [NOIP2017提高组模拟6.30]tty's sequence (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB ...
随机推荐
- 【POJ 2352】 Stars
[题目链接] http://poj.org/problem?id=2352 [算法] 树状数组 注意x坐标为0的情况 [代码] #include <algorithm> #include ...
- Java类的根Object
一.Object类介绍 Object全名java.lang.Object,java.lang包在使用的时候无需显示导入,编译时由编译器自动导入.Object类是类层次结构的根,Java中所有的类从根本 ...
- springMVC+uploadify3.1 文件上传 demo
uploadify3.1 api 可参考:(点击打开链接) 需要springmvc的jar包 1.upload.jsp(主要代码) <script type="text/javascr ...
- Extjs 可重用组件开始写 2014 8 23日
今天开始自己去写组件. 这次写组件重点在于参考cfWeb来写出自己的组件. 首先先把结构做出来. 对于这次的自定义组件,现在所做的事情关键在于上面四个文件.于是将上面四个文件贴出来. MyApp.js ...
- 将查询到的数据导出到Excel终结版
吐槽 最近新项目需要用到导出数据到Excel,试了试之前写的一篇博文,但是感觉那个不太好,主要原因是没能实现样式控制,今天我们就来介绍一种新的导出Excel方法,而且这种方法很轻量级,它利用xml生成 ...
- tp5控制器调用,方法调用
<?php //命名空间 namespace app\index\controller; use app\admin\controller\Deer; class User{ public ...
- input[type='file']获取上传文件路径案例
最近在项目时,需要获取用户的上传文件的路径,便写了一个demo: <body> <input type="file" name="" valu ...
- sql:String格式转换为时间进行比较
字符串的格式为 yyyy-MM-dd HH:mm:ss str_to_date(a.time, '%Y-%m-%d %k:%i') < str_to_date(b.time, '%Y-%m-%d ...
- Oracle PL/SQL开发基础(第三十三弹:EXCEPTION_INIT)
如果有一些异常并没有异常名称,比如一些ORA-开头的异常并没有一个友好的预定义的异常定义,此时在WHEN子句中无法使用具体的异常名称,必须要使用OTHERS异常处理器进行捕捉.通过EXCEPTION_ ...
- ZBrush中Blob点滴笔刷介绍
对于ZBrush®来说,笔刷的使用时至关重要的,ZBrush中给我们提供了越来越多的笔刷的同时,我们也要根据经验来合理选择笔刷.本文内容小编将分享Blob点滴笔刷的简单介绍,该笔刷在使用时笔头犹如一股 ...