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的更多相关文章
随机推荐
- 使用jackson美化输出json/xml
转载:http://www.cnblogs.com/xiwang/ 如何使用jackson美化输出json/xml 1.美化POJO序列化xml 下面将POJO列化为xml并打印. Person pe ...
- Reading CLR via c# 4th Edition
In fact, at runtime, the CLR has no idea which programming language the developer used for thesource ...
- 2018.11.04 洛谷P2679 子串(线性dp)
传送门 为什么前几年的noipnoipnoip总是出这种送分题啊? 这个直接线性dpdpdp不就完了吗? f[i][j][k][0/1]f[i][j][k][0/1]f[i][j][k][0/1]表示 ...
- Java数据类型的转换
Java数据类型,从小到大排序 byte ,short ,int ,long ,float, double,char 1.小数据类型转换大的数据类型,自动转换 int a = 3; double b ...
- JAVA经典算法40+
现在是3月份,也是每年开年企业公司招聘的高峰期,同时有许多的朋友也出来找工作.现在的招聘他们有时会给你出一套面试题或者智力测试题,也有的直接让你上机操作,写一段程序.算法的计算不乏出现,基于这个原因我 ...
- python输出显示颜色
显示颜色格式:\033[显示方式;字体色;背景色m......[\033[0m] ------------------------------------------- --------------- ...
- 1.7.8使用return 停止线程
package com.cky.thread; /** * Created by edison on 2017/12/3. */ public class MyThread12 extends Thr ...
- 笔记:使用mailto在网页中链接Email地址
<a>标签还有一个作用是可以链接Email地址,使用mailto能让访问者便捷向网站管理者发送电子邮件.我们还可以利用mailto做许多其它事情.下面一一进行讲解,请看详细图示: 注意:如 ...
- CALayer-CAShapeLayer/CAGradientLayer
参考博客 CAShapeLayer http://blog.csdn.net/yongyinmg/article/details/38755955 CAShapeLayer和CAGradientLay ...
- 初始Hive
Hive 背景 引入原因 对存在HDFS上的文件或HBase中的表进行查询时,是要手工写一推MapReduce代码 对于统计任务,只能由懂MapReduce的程序员才能搞定 耗时耗力,更多精力没有有效 ...