当前位置: 首页 > news >正文

自学家装设计从哪入手/seo排名是什么意思

自学家装设计从哪入手,seo排名是什么意思,dreamweaver的购买方式,瑶海区网站建设【题目】C. Bipartite Segments 【题意】给定n个点m条边的无向连通图,保证不存在偶数长度的简单环。每次询问区间[l,r]中包含多少子区间[x,y]满足只保留[x,y]之间的点和边构成的图是一个二分图。 【算法】Tarjan缩点(找环) 【题解】如果两个奇…

【题目】C. Bipartite Segments

【题意】给定n个点m条边的无向连通图,保证不存在偶数长度的简单环。每次询问区间[l,r]中包含多少子区间[x,y]满足只保留[x,y]之间的点和边构成的图是一个二分图。

【算法】Tarjan缩点(找环)

【题解】如果两个奇数长度的环相交,会得到一个偶数长度的简单环。所以原图是不存在偶数长度环的仙人掌(每条边只属于一个简单环)。

二分图的定义:一个图是二分图当且仅当不存在奇数长度的环。在当前仙人掌上,二分图实际上要求选择的点不存在环

也就是对于图上已有的每个环x有最小编号点min(x)和最大编号点max(x),区间不能同时包含min(x)和max(x)。(找环可以用Tarjan缩点)

为了统计区间数量,我们预处理r[i]表示以i为区间左端点,区间右端点最远到达r[i],初始r[min(x)]=max(x)-1,然后统计后缀最小值就可以得到r[]数组。

对于询问的区间i∈[l,r],若i>r则ans+=r-i+1,否则ans+=r[i]-i+1。容易发现r[]数组单调递增,所以可以二分求解转折点。

复杂度O(n log n)。

边编号不能为0 QAQ

#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#define ll long long
using namespace std;
int read(){char c;int s=0,t=1;while(!isdigit(c=getchar()))if(c=='-')t=-1;do{s=s*10+c-'0';}while(isdigit(c=getchar()));return s*t;
}
const int maxn=300010;
int tot=1,first[maxn],low[maxn],dfn[maxn],dfsnum=0,c[maxn],n,m,mins[maxn],maxs[maxn],s[maxn],d[maxn];
ll sum[maxn],ss[maxn];
bool iscut[maxn];
struct edge{int v,from;}e[maxn*2];
void insert(int u,int v){tot++;e[tot].v=v;e[tot].from=first[u];first[u]=tot;}// 
void tarjan(int x,int fa){low[x]=dfn[x]=++dfsnum;for(int i=first[x];i;i=e[i].from)if(e[i].v!=fa){if(!dfn[e[i].v]){tarjan(e[i].v,x);low[x]=min(low[x],low[e[i].v]);if(low[e[i].v]>dfn[x])iscut[i]=iscut[i^1]=1;}else low[x]=min(low[x],dfn[e[i].v]);}
}
void dfs(int x,int y){c[x]=y;d[y]++;for(int i=first[x];i;i=e[i].from)if(!iscut[i]&&!c[e[i].v])dfs(e[i].v,y);
}int main(){n=read();m=read();for(int i=1;i<=m;i++){int u=read(),v=read();insert(u,v);insert(v,u);}tarjan(1,0);int cnt=0;for(int i=1;i<=n;i++)if(!c[i])dfs(i,++cnt);memset(mins,0x3f,sizeof(mins));for(int i=1;i<=n;i++){mins[c[i]]=min(mins[c[i]],i);maxs[c[i]]=max(maxs[c[i]],i);}for(int i=1;i<=n;i++)s[i]=n;for(int i=1;i<=cnt;i++)if(d[i]>1)s[mins[i]]=maxs[i]-1;for(int i=n-1;i>=1;i--)s[i]=min(s[i],s[i+1]);for(int i=1;i<=n;i++)sum[i]=sum[i-1]+(s[i]-i+1),ss[i]=ss[i-1]+i;int q=read();while(q--){int u=read(),v=read();int x=lower_bound(s+u,s+v+1,v)-s;ll ans=0;ans+=sum[x-1]-sum[u-1];ans+=1ll*(v-x+1)*(v+1)-(ss[v]-ss[x-1]);printf("%lld\n",ans);}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/8133813.html

http://www.jmfq.cn/news/4924135.html

相关文章:

  • 抖音营销ppt课件/seo课程培训入门
  • 上海网站 备案查询/电话营销外包公司
  • 房地产公司网站建设ppt/响应式网站 乐云seo品牌
  • 罗湖商城网站设计/长沙网
  • 好的响应式网站有哪些/怎么自己创建一个网站
  • 深圳做网站公司那家比较好/故事式软文范例100字
  • 彩票网站上的走势图是怎么做的/西安网站建设
  • 广州响应式网站建设/南宁seo教程
  • 网站后台用什么软件做/官网seo哪家公司好
  • 企业官方网站案例/seo引擎优化是做什么的
  • 政府网站建设和管理的要求/百度快照官网
  • 公司做网站都需要什么流程/东莞优化疫情防控措施
  • 无限容量网站/央视新闻最新消息今天
  • 珠海市研发网站建设/湖北seo公司
  • 设计投稿赚钱网站/贵州快速整站优化
  • 网站开发团队分工/磁力吧
  • 电商网站后台/网上国网app
  • 中文网站的英文/舆情信息报送
  • 帝国cms做招聘网站/百度推广首页登录
  • 承接网站怎么做/佛山网站建设正规公司
  • 做外贸那里发广告网站/打开百度网站首页
  • 做自己的网站要多久/提高工作效率的方法不正确的是
  • 360搜索联盟网站制作/深圳网络推广服务公司
  • 法治建设优秀网站/seo经典案例
  • 风铃网站代做/怎么申请域名建立网站
  • 郑州网站建设公司/关键词是网站seo的核心工作
  • 商城站地址/站长交流平台
  • 怎么找企业做网站/如何制作一个自己的网页网站
  • 网站域名注册服务商/企业seo排名费用报价
  • 如何免费申请自己的网站/关键词调价工具哪个好