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

常州小型网站建设游戏推广赚钱

常州小型网站建设,游戏推广赚钱,网站工信部超链接怎么做,河源做网站先不考虑数据结构部分,尝试猜一下结论。 结论:一个连通块有解当且仅当连通块的度数为偶数。 然后这题要你最大边权最小。最无脑的方法就是直接上 lct \text{lct} lct。真省事啊 我第一眼想到的还是整体二分。这玩意非常好写。 但是为什么也可以用线段…

先不考虑数据结构部分,尝试猜一下结论。

结论:一个连通块有解当且仅当连通块的度数为偶数。

然后这题要你最大边权最小。最无脑的方法就是直接上 lct \text{lct} lct真省事啊

我第一眼想到的还是整体二分。这玩意非常好写。

但是为什么也可以用线段树分治来做呢。这需要简单的分析一下性质。考虑求出每条边在哪些生成树上出现过,分析可知这一定是一段区间。

然后是非常玄学的操作。考虑离线,然后 倒着处理询问 (真是违背常理啊),这样的话一条边如果原来在生成树上,那么删去一条边后显然还是在生成树上(上面的分析告诉你的),这意味着恰好有一条边被加了进去,而这条边被加进去的条件就是连接的两个点不联通。

基于上述分析,我们可以尝试分治。首先,计算出影响区间的右端点在 [ m i d + 1 , r ] [mid+1,r] [mid+1,r]之间的边,那么我们就要先算出哪些边的影响区间 ≥ m i d + 1 \ge mid+1 mid+1,哪些边的影响区间 ≤ m i d \le mid mid,这样就将边集分成了两部分。使用可撤销并查集,然后往两边递归即可。怎么计算答案呢,发现递归到叶子节点的时候可以把那颗生成树算出来,然后就做完了。

事实上算边的影响区间部分我们可以不用真的将边分到两个集合中去。考虑更聪明的想法,倒着往前处理询问的时候,之前在生成树上的边还是在生成树上,那么我们事实上只需要在此基础上加入边权更大的边(当然这条边必须合法),直到得到的图满足条件。那么我们就知道新加入的这些边的影响区间的右端点就是当前这个位置,在线段树上对应部分打一个标记即可。这个半在线做法非常神奇。

这高级玩意估计考场上也想不到/kk

复杂度 O ( n log ⁡ n log ⁡ m ) O(n\log n\log m) O(nlognlogm)

实现了后一种较为复杂的方法。

该死,有一个地方打挂了。

#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define inf 0x3f3f3f3f
#define db double
#define cpx complex<db>
using namespace std;
const int N=3e5+5;
int n,m,cnt,res[N],now;
int fa[N],s[N],sa[N];
vector<int>G[N<<2];
struct node{int x,y,z;
}e[N];
bool cmp(int x,int y){return e[x].z<e[y].z;
}
int find(int x){return fa[x]==x?x:find(fa[x]);
}
void modify(int p,int l,int r,int ql,int qr,int x){if(ql>qr)return;if(ql<=l&&r<=qr){G[p].pb(x);return;}int mid=l+r>>1;if(ql<=mid)modify(p<<1,l,mid,ql,qr,x);if(mid<qr)modify(p<<1|1,mid+1,r,ql,qr,x);
}
void solve(int p,int l,int r){vector<pair<int,int>>bak;for(auto pos:G[p]){int x=find(e[pos].x),y=find(e[pos].y);if(x!=y){cnt-=(s[x]&1)+(s[y]&1);if(s[x]>s[y])swap(x,y);bak.pb(make_pair(x,y));fa[x]=y,s[y]+=s[x],cnt+=(s[y]&1);}}if(l==r){while(cnt&&now<=m){int x=find(e[sa[now]].x),y=find(e[sa[now]].y);if(sa[now]<l)modify(1,1,m,sa[now],l-1,sa[now]);//fixedif(sa[now]<=l&&x!=y){cnt-=(s[x]&1)+(s[y]&1);if(s[x]>s[y])swap(x,y);bak.pb(make_pair(x,y));fa[x]=y,s[y]+=s[x],cnt+=(s[y]&1);}now++;}if(!cnt)res[l]=e[sa[now-1]].z;else res[l]=-1;}else{int mid=l+r>>1;solve(p<<1|1,mid+1,r);solve(p<<1,l,mid);}reverse(bak.begin(),bak.end());for(auto x:bak){cnt-=s[x.se]&1;fa[x.fi]=x.fi,s[x.se]-=s[x.fi];cnt+=(s[x.fi]&1)+(s[x.se]&1);}
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++)fa[i]=i,s[i]=1;for(int i=1;i<=m;i++){cin>>e[i].x>>e[i].y>>e[i].z,sa[i]=i;}sort(sa+1,sa+1+m,cmp);cnt=n,now=1;solve(1,1,m);for(int i=1;i<=m;i++)cout<<res[i]<<"\n";
}
http://www.hkea.cn/news/513023/

相关文章:

  • 做网站话术简述搜索引擎的工作原理
  • 现在建设网站赚钱吗seo外链论坛
  • 青海网站建设企业海南百度竞价推广
  • 南京做网站yuanmus电脑突然多了windows优化大师
  • 美国做deals的网站软文营销经典案例优秀软文
  • 招标网站怎么做吴江seo网站优化软件
  • 苏州建设工程协会网站seo去哪里学
  • 上海正规网站制作价格可口可乐软文营销案例
  • 番禺网站 建设信科网络站长之家ping
  • 建筑工程施工承包合同关键词优化报价推荐
  • 网站可以免费看企业网站系统
  • 中华人民共和国建设部网站seo怎么快速提高排名
  • 南宁做网站的有几家东莞网络营销网站建设
  • 苏州知名网站建设开发新区seo整站优化公司
  • 政府建设网站计划书品牌营销策略包括哪些内容
  • 深圳市做网站百度seo排名点击器app
  • 五莲网站建设维护推广网络营销推广及优化方案
  • 重庆网红整站多关键词优化
  • 动易网站cms一级消防工程师考试
  • wordpress更新报错想找搜索引擎优化
  • 提供网站建设费用资源网
  • wordpress怎么使用主题seo优化评论
  • 柳州做网站如何建网站详细步骤
  • 黄岛做网站哪家好四川seo关键词工具
  • dede门户网站模版写软文推广
  • 网站开发者排名开发一个app平台大概需要多少钱?
  • 做网站 博客百度推广助手客户端
  • 温州市手机网站制作哪家好爱站网长尾词挖掘
  • 党委网站建设要求凡科建站靠谱吗
  • wordpress 安卓客户端福建seo优化