JZOJ 5919. 逛公园
Description
Description
小 B 带着 GF 去逛公园,公园一共有 n 个景点,标号为 1 . . . n。景点之间有 m 条路径相连。
小 B 想选择编号在一段区间 [l, r] 内的景点来游玩,但是如果这些景点的诱导子图形成了环,那么 GF 将会不高兴。
小 B 给出很多个询问 [x, y],想让你求有多少个区间 [l, r] 满足 x ≤ l, r ≤ y 且不会使 GF不高兴。
Input
第 2 . . . m + 1 行每行两个整数 ui, vi 表示第 i 路径的两端。
第 m + 2 行是一个整数 q 表示询问的个数,接下来 m 行每行两个整数 xi, yi 表示询问。
Output
Sample Input
8 9
1 2
2 3
3 1
4 5
5 6
6 7
7 8
8 4
7 2
3
1 8
1 4
3 8
Sample Output
27
8
19
Data Constraint
对于另外 10% 的数据,n = m + 1。
对于另外 10% 的数据,n = m
对于 100% 的数据,n, m ≤ 3 × 10^5, xi ≤ yi,不存在重边、自环,不存在一条边同时存在于两个不同的简单环。
#include <cstdio>
#include <cstring>
#include <iostream>
#define rep(i,a,b) for (int i=a;i<=b;i++)
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define N 500007
using namespace std;
int n,m,ls[N],tot,cnt,num,top,Q;
int dfn[N],low[N],stack[N];
int can[N];
long long sum[N]; struct edge{
int to,next;
}e[N*];
struct arr{
int mx,mi;
}a[N]; void Add(int x,int y){
e[++tot].to=y;
e[tot].next=ls[x];
ls[x]=tot;
} void Init(){
scanf("%d%d",&n,&m);
rep(i,,m){
int u,v;
scanf("%d%d",&u,&v);
Add(u,v);
Add(v,u);
}
} void tarjan(int x,int pre){
dfn[x]=low[x]=++num;
stack[++top]=x;
for (int i=ls[x];i;i=e[i].next){
int v=e[i].to;
if (v==pre) continue;
if (!dfn[v]){
tarjan(v,x);
low[x]=min(low[x],low[v]);
if (dfn[x]<=low[v]){
cnt++;
a[cnt].mi=1e9;
int tmp=top;
while(top){
int y=stack[top--];
a[cnt].mi=min(a[cnt].mi,y);
a[cnt].mx=max(a[cnt].mx,y);
if (y==v) break;
}
a[cnt].mi=min(a[cnt].mi,stack[top]);
a[cnt].mx=max(a[cnt].mx,stack[top]);
if (tmp-top>) can[a[cnt].mi]=min(can[a[cnt].mi],a[cnt].mx-);
}
}
else low[x]=min(low[x],dfn[v]);
}
} void Work(){
scanf("%d",&Q);
while(Q--){
int x,y;
long long ans=;
scanf("%d%d",&x,&y);
int l=x,r=y,pos;
while (l<=r){
int mid=(l+r)/;
if (can[mid]>=y) pos=mid,r=mid-;
else l=mid+;
}
ans=sum[pos-]-sum[x-];
ans+=(long long)(y-pos+)*(y-pos+)/;
printf("%lld\n",ans);
}
} int main(){
freopen("graph.in","r",stdin);
freopen("graph.out","w",stdout);
Init();
rep(i,,n) can[i]=n;
rep(i,,n) if(!dfn[i]) tarjan(i,);
for(int i=n-;i>=;i--) can[i]=min(can[i],can[i+]);
for(int i=;i<=n;i++) sum[i]=sum[i-]+(long long)(can[i]-i+);
Work();
}
JZOJ 5919. 逛公园的更多相关文章
- [vijos P1083] 小白逛公园
不知怎地竟有种错觉此题最近做过= =目测是类似的?那道题貌似是纯动归? 本来今晚想做两道题的,一道是本题,一道是P1653疯狂的方格取数或NOI08 Employee,看看现在的时间目测这个目标又达不 ...
- Bzoj 1756: Vijos1083 小白逛公园 线段树
1756: Vijos1083 小白逛公园 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1021 Solved: 326[Submit][Statu ...
- BZOJ 1756: Vijos1083 小白逛公园
题目 1756: Vijos1083 小白逛公园 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 856 Solved: 264[Submit][Sta ...
- JDOJ-P1260 VIJOS-P1083 小白逛公园
首先,在这里给大家推荐一个网站,https://neooj.com:8082,这是我母校的网站 言归正传,题目描述 VIJOS-P1083 小白逛公园 Time Limit: 1 Sec Memor ...
- [NOIP2017] 逛公园
[NOIP2017] 逛公园 题目大意: 给定一张图,询问长度 不超过1到n的最短路长度加k 的1到n的路径 有多少条. 数据范围: 点数\(n \le 10^5\) ,边数\(m \le 2*10^ ...
- [NOIp 2017]逛公园
Description 策策同学特别喜欢逛公园.公园可以看成一张$N$个点$M$条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,$N$号点是公园的出口,每条边有一个非负权值, 代表策策经 ...
- 【NOIP 2017】逛公园
Description 策策同学特别喜欢逛公园.公园可以看成一张N个点M条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要 ...
- 逛公园 [NOIP2017 D1T3] [记忆化搜索]
Description 策策同学特别喜欢逛公园.公园可以看成一张N个点M条边构成的有向图,且没有自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的 ...
- [luogu P3953] [noip2017 d1t3] 逛公园
[luogu P3953] [noip2017 d1t3] 逛公园 题目描述 策策同学特别喜欢逛公园.公园可以看成一张$N$个点$M$条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,$N ...
随机推荐
- 排序 & 常用算法
一.快速排序QuickSort 快速排序和归并排序都使用分治法来设计算法,区别在于归并排序把数组分为两个基本等长的子数组,分别排好序之后还要进行归并(Merge)操作,而快速排序拆分子数组的时候显得更 ...
- node模块机制
一.node模块化机制 1.commonJS模块规范包括三部分:模块引用.模块定义.模块标识.例如: //math.js exports.add = function(){ var sum = ...
- __getattr__,__getattribute__????
class Foo(object): def __getattr__(sel,item): print('y') def __getattribute(self,item): print('x') o ...
- Design Pattern ->Bridge
Layering & Contract Philosophy With additional indirection. class CWindowImp { public: virtual v ...
- 【Node.js】初识Node.js
因组里项目需要,我和另外一名同事要学习Node.js.之前接触过Javascript,都是前台处理html时用到,现在要用Javascript做后端,学习Node.js,用一段时间专心学习一门新技术, ...
- 监控系统 - pnp4nagios
pnp4nagios是nagios的一个插件,用于将perfdata数据写入rrd,用于展示流量图,目前最高版本0.6.25. 我用官方下载的tar.gz打rpm包,官方提供的pnp4nagios.s ...
- vos对接时业务确认及信息安全责任承诺书
业务确认及信息安全责任承诺书 双方达成一致,******网络科技有限公司向 有限公司提供中国移动网内语音线路接入服务,保证资源长期使用,保证线路资源接通率标 准,合 ...
- Altium_Designer-PCB中布局元器件时的翻转问题
这个问题是我在第一次对PCB元器件布局时发现的,当时我绘制好原理图生成PCB后,出现了这样一个情况: 在我反复尝试走线后,走好线发现很困难,最后我才想到如果能把这个器件反转一下问题不就都解决了吗!自己 ...
- python 字符串部分总结
字符串 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符 >>> ord('A') 65 >>> ord ...
- 广搜,深搜,单源最短路径,POJ(1130),ZOJ(1085)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=85 http://poj.org/problem?id=1130 这 ...