bzoj5216: [Lydsy2017省队十连测]公路建设
题目思路挺巧妙的。
感觉应该可以数据结构一波,发现n很小可以搞搞事啊。然后又发现给了512mb,顿时萌生大力线段树记录的念头
一开始想的是记录节点的fa,然后发现搞不动啊??
但其实边肯定最多只有n-1条,那么就可以记录选择的边,然后用归并合并即可
没清空答案还wa可一次(lll¬ω¬),浪费时间写暴力和拍(lll¬ω¬)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; int m;
struct edge
{
int x,y,d;
}e[]; struct node
{
int l,r,lc,rc,as[];
}tr[];int trlen; int n,fa[];
int findfa(int x)
{
if(fa[x]==x)return x;
fa[x]=findfa(fa[x]);return fa[x];
}
void mergesort(int now,int lc,int rc)
{
for(int i=;i<=n;i++)fa[i]=i; int Llim=min(n-,tr[lc].r-tr[lc].l+);
int Rlim=min(n-,tr[rc].r-tr[rc].l+); int p=,i=,j=; int fx,fy;
while(i<=Llim&&j<=Rlim&&p<=n-)
{
int Lid=tr[lc].as[i],Rid=tr[rc].as[j];
if(e[Lid].d<e[Rid].d)
{
fx=findfa(e[Lid].x);fy=findfa(e[Lid].y);
if(fx!=fy)
{
fa[fx]=fy;
tr[now].as[p++]=Lid;
}
i++;
}
else
{
fx=findfa(e[Rid].x);fy=findfa(e[Rid].y);
if(fx!=fy)
{
fa[fx]=fy;
tr[now].as[p++]=Rid;
}
j++;
}
}
while(i<=Llim&&p<=n-)
{
int id=tr[lc].as[i];
fx=findfa(e[id].x),fy=findfa(e[id].y);
if(fx!=fy)
{
fa[fx]=fy;
tr[now].as[p++]=id;
}
i++;
}
while(j<=Rlim&&p<=n-)
{
int id=tr[rc].as[j];
fx=findfa(e[id].x),fy=findfa(e[id].y);
if(fx!=fy)
{
fa[fx]=fy;
tr[now].as[p++]=id;
}
j++;
}
} //-----------merge----------------------------- void bt(int l,int r)
{
int now=++trlen;
tr[now].l=l;tr[now].r=r;
tr[now].lc=tr[now].rc=-;
if(l==r)tr[now].as[]=l;
else
{
int mid=(l+r)/;
tr[now].lc=trlen+;bt(l,mid);
tr[now].rc=trlen+;bt(mid+,r);
mergesort(now,tr[now].lc,tr[now].rc);
}
}
void query(int now,int l,int r)
{
if(tr[now].l==l&&tr[now].r==r)
{
tr[trlen+]=tr[trlen+];
mergesort(trlen+,trlen+,now);
tr[trlen+].r=tr[now].r;
return ;
}
int lc=tr[now].lc,rc=tr[now].rc;
int mid=(tr[now].l+tr[now].r)/; if(r<=mid) query(lc,l,r);
else if(mid+<=l)query(rc,l,r);
else query(lc,l,mid), query(rc,mid+,r);
}
int main()
{
freopen("data.in","r",stdin);
freopen("1.out","w",stdout); int Q;
scanf("%d%d%d",&n,&m,&Q);
for(int i=;i<=m;i++)
scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].d);
trlen=;bt(,m); int l,r;
while(Q--)
{
scanf("%d%d",&l,&r);
tr[trlen+].l=l;tr[trlen+].r=l-;
memset(tr[trlen+].as,,sizeof(tr[trlen+].as));
query(,l,r); long long ans=;
for(int i=;i<=min(n-,r-l+);i++)
ans+=((long long)(e[tr[trlen+].as[i]].d));
printf("%lld\n",ans);
}
return ;
}
bzoj5216: [Lydsy2017省队十连测]公路建设的更多相关文章
- bzoj 5216 [Lydsy2017省队十连测]公路建设 线段树维护 最小生成树
[Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 93 Solved: 53[Submit][Status][ ...
- bzoj 5216: [Lydsy2017省队十连测]公路建设
5216: [Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 66 Solved: 37[Submit][St ...
- Lydsy2017省队十连测
5215: [Lydsy2017省队十连测]商店购物 可能FFT学傻了,第一反应是前面300*300背包,后面FFT... 实际上前面背包,后面组合数即可.只是这是一道卡常题,需要注意常数.. //A ...
- 2018.09.26 bzoj5218: [Lydsy2017省队十连测]友好城市(回滚莫队)
传送门 比较简单的一道回滚莫队吧. 每次询问用bitset优化kosaraju统计答案. 就是有点难调. 然后向dzyo学长学习了回滚莫队的一种简洁的实现方式,就是直接建立一个sqrt(m)∗sqrt ...
- bzoj 5218: [Lydsy2017省队十连测]友好城市
题意: 这题显然直接tarjan是做不了的. 这里安利另一个求SCC的算法Kosaraju,学习的话可以见这篇博客 于是结合莫队,我们有了个暴力. 发现主要瓶颈是dfs过程中找最小的未经过的点,我们用 ...
- 【BZOJ 5222】[Lydsy2017省队十连测]怪题
题目大意: 传送门 给一个长度为$n(n<=200)$的数列$h$,再给$m$个可以无限使用的操作,第$i$个操作为给长度为花费$c_i$的价值给长度为$l_i$的数列子序列+1或-1,求将数列 ...
- 2018.09.26 bzoj5221: [Lydsy2017省队十连测]偏题(数学推导+矩阵快速幂)
传送门 由于没有考虑n<=1的情况T了很久啊. 这题很有意思啊. 考试的时候根本不会,骗了30分走人. 实际上变一个形就可以了. 推导过程有点繁杂. 直接粘题解上的请谅解. 不得不说这个推导很妙 ...
- BZOJ5217: [Lydsy2017省队十连测]航海舰队 FFT
被FFT的空间卡了半天 后来发现根本不用开那么大... 首先可以把包含舰艇的那个小矩形找出来 将它一行一行连接成一个串T 其中舰艇位置为1其他位置为0 将大矩形也连成串S 其中礁石为1其他为0 两个串 ...
- BZOJ5217:[Lydsy2017省队十连测]航海舰队——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5217 Byteasar 组建了一支舰队!他们现在正在海洋上航行着.海洋可以抽象成一张n×m 的网格 ...
随机推荐
- JAVA 常用集合接口List、Set、Map总结
java中频繁使用List.Set.Map接口,将其总结如下 它们的继承与实现关系如下: Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└ ...
- AHOI 2009 (BZOJ1798)维护序列 seq (线段树好题?)
我是不会说这个题很坑的.. 改了一晚上... // by SiriusRen #include <cstdio> #define N 150000 #define LSON l,mid,l ...
- elasticsear+kibana+logstash 优化
##关于s2安装cerebro来可视化集群管理##### https://blog.csdn.net/RWSLR6/article/details/79648767 https://github.co ...
- 个人网站html5雪花飘落代码JS特效下载
如何给自己的网站/页面添加雪花代码.特效呢?有的网站配合自己的主题模板添加雪花飘落效果挺好看的.特别是与冬天季节相关的主题,很多的博客空间都加了雪花的效果.在网上搜索了几种雪花效果,做了简单的修改,在 ...
- 7) 十分钟学会android--Activity的生命周期之暂停与恢复
在正常使用app时,前端的activity有时会被其他可见的组件阻塞(obstructed),从而导致当前的activity进入Pause状态.例如,当打开一个半透明的activity时(例如以对话框 ...
- Sublime Text3 插件记录
插件官网 其他插件安装之前,先安装 Package Control: 快捷键Ctrl+`或View > Show Console打开控制台. 输入以下 Python 代码,回车. import ...
- Windows上部署Python
以Python 3.5为例 1.到https://www.python.org/downloads/windows/下载embeddable zip file类型的压缩包python-3.5.1-em ...
- IAAS: IT公司去IOE-Alibaba系统构架解读
从Hadoop到自主研发,技术解读阿里去IOE后的系统架构 原地址:...................... 云计算阿里飞天 摘要:从IOE时代,到Hadoop与飞天并行,再到飞天单集群5000节 ...
- RxSwift の Observable とは何か
Qiita にあげていた記事ですが.ここにもバックアップをとっておきます この記事は.2017/09/15〜17 に早稲田大学 理工学部 西早稲田キャンパスで開催される iOSDC Japan 201 ...
- 构造定律(constructal law)-构造定律作为第二个时间箭头,将和热力学第二定律一道将宇宙推向无序。
优化系统结构,使信息和物质流在结构内的流动更畅通. 构造定律(constructal law) 由Adrian Bejan于1995创立的构造定律(constructal law): For a ...