jzoj4223
考慮這樣一種暴力:將所有<=x的邊按照類似最小生成樹的方式加入答案,然後用下面的方法統計答案:
1.首先加入一條邊
2.看這條邊是否將會合成聯通塊,如果會,那麼加進這條邊,記這條邊一端聯通塊大小為x,另一端為y,則對答案貢獻為(x+y)2−x2−y2(x+y)^2-x^2-y^2(x+y)2−x2−y2
但是這樣太慢,需要優化
不過我們發現:題目沒有要求在線,於是我們可以離線,將詢問按照x值從小到大排序,插進邊裡,這樣我們可以利用以前做過的結果不用重新再做一遍,減少了冗餘運算
#include<bits/stdc++.h>
using namespace std;
struct no{
int a,b,c,t,d;
bool operator <(const no &rhs)const{
return c<rhs.c||c==rhs.c&&t<rhs.t;
}
}e[500010];
int f[500010],ans,s[500010],n,m,q,ct,r[500010];
int fd(int x){return f[x]==x?x:f[x]=fd(f[x]);}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&m,&q);
memset(e,0,sizeof(e));
for(int i=1;i<=n;i++){
f[i]=i;
s[i]=1;
}
ct=0;ans=0;
while(m--){
ct++;
scanf("%d%d%d",&e[ct].a,&e[ct].b,&e[ct].c);
e[ct].t=0;
}
for(int i=1;i<=q;i++){
ct++;
scanf("%d",&e[ct].c);
e[ct].t=1;
e[ct].d=i;
}
int p=1,w=0;
sort(e+1,e+ct+1);
while(w!=q){
while(p<=ct&&!e[p].t){
int xx=fd(e[p].a),yy=fd(e[p].b);
p++;
if(xx!=yy){
f[xx]=yy;
ans-=s[yy]*s[yy];
ans-=s[xx]*s[xx];
s[yy]+=s[xx];
ans+=s[yy]*s[yy];
}
}
w++;
r[e[p].d]=ans;
p++;
}
for(int i=1;i<=q;i++)
printf("%d\n",r[i]);
}
}
jzoj4223的更多相关文章
随机推荐
- crud树型结构数据
小型数据,比如标签,部门之类的,可以组织数据,成层状结构,一并返回前端,节省请求次数:但是大型数据,比如省市区等等联动,如果一并返回组织好的数据,查询量大,页面多次刷新,恶意请求,放入缓存还可以,其实 ...
- zabbix实现企业微信监控报警
一.zabbix基本说明 简介:zabbix基于Web界面的分布式系统监控的企业级开源软件.可以监控各种系统与设备,网络参数,保证服务器设备安全运营:提供灵活的通知机制.如果检测到的指标不达标,就实现 ...
- idea 设置编译的编码方式
Settings->Build,Execution,Deployment->Compiler->Java Compiler,右边的详情列表中,Javac Options有设置参数的地 ...
- Linux 文件授权
Linux用户权限 在Linux操作系统中,root的权限是最高的,相当于windows的administrator,拥有最高权限,能执行任何命令和操作,在Linux系统中,通过UID来区分用 ...
- 2018.01.04 bzoj5291: [Bjoi2018]链上二次求和(线段树)
传送门 线段树基础题. 题意:给出一个序列,要求支持区间加,查询序列中所有满足区间长度在[L,R][L,R][L,R]之间的区间的权值之和(区间的权值即区间内所有数的和). 想题555分钟,写题202 ...
- C++航空系统
/* * SHA-256 implementation, Mark 2 * * Copyright (c) 2010,2014 Ilya O. Levin, http://www.literateco ...
- vue 开发系列(八) 动态表单开发
概要 动态表单指的是我们的表单不是通过vue 组件一个个编写的,我们的表单是根据后端生成的vue模板,在前端通过vue构建出来的.主要的思路是,在后端生成vue的模板,前端通过ajax的方式加载后端的 ...
- bootstrap-glyph-customization
http://www.runoob.com/try/demo_source/bootstrap-glyph-customization.htm http://fontawesome.io/icons/
- 在多台PC之间同步Resharper所有设置的方法
默认情况下Resharper只允许导出CodeStyle的设置,对于其它的设置不能导出,这样在不利用我们在多台PC之间同步Resharper的设置,经过多次尝试和Google找到了一种解决办法: Re ...
- sql_id VS hash_value
有没有发现,v$session,v$sql,v$sqlarea,v$sqltext,v$sql_shared_cursor等试图连接的时候经常会用到hash_value,sql_id,但是他们2个之间 ...