CCC2018 最大战略储备
并查集基本处理即可。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define int long long
const int MAXN = 100001;
struct edge {
int u;
int v;
int w;
bool tag;
}e[MAXN << 1];
bool cmp(edge a,edge b){
return a.w < b.w;
}
int ans;
struct _set {
int f[MAXN];
int rnd[MAXN];
_set() {
memset(rnd,0,sizeof rnd);
}
int find(int x) {
return x == f[x] ? x : f[x] = find(f[x]);
}
void merge(int x,int y) {
if(rnd[x] > rnd[y]) {
f[y] = x;
}
else if(rnd[x] == rnd[y]) {
f[x] = y;
rnd[y] ++;
}
else f[x] = y;
}
}F1,F2;
int read () {
int q=0,f=1;char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;ch=getchar();
}
while(isdigit(ch)){
q=q*10+ch-'0';ch=getchar();
}
return q*f;
}
int n,m,p,q;
int tot;
int cnt1,cnt2;
signed main () {
n = read(),m = read(),p = read(),q = read();
for(int i = 1;i <= p; ++i) {
e[i].u = read();
e[i].v = read();
e[i].w = read();
}
for(int i = 1;i <= q; ++i) {
e[i + p].tag = 1;
e[i + p].u = read();
e[i + p].v = read();
e[i + p].w = read();
}
sort(e + 1,e + p + q + 1,cmp);
for(int i = 1;i <= n; ++i) {
F1.f[i] = i;
}
for(int i = 1;i <= m; ++i) F2.f[i] = i;
for(int i = 1;i <= p + q; ++i) {
if(e[i].tag == 0) {
int x = F2.find(e[i].u);
int y = F2.find(e[i].v);
int z = e[i].w;
if(x == y) {
ans += z * n;
}
else {
F2.merge(x,y);
ans += z * cnt1;
cnt2 ++;
}
}
else {
int x = F1.find(e[i].u);
int y = F1.find(e[i].v);
int z = e[i].w;
if(x == y) {
ans += z * m;
}
else {
F1.merge(x,y);
cnt1 ++;
ans += z * cnt2;
}
}
}
cout<<ans<<endl;
return 0;
}
CCC2018 最大战略储备的更多相关文章
- LOJ2803 CCC2018 平衡树 数论分块、记忆化搜索
传送门 题意差评,其实就是一个递推式:\(f_1 = 1 , f_i = \sum\limits_{j=2}^i f_{\lfloor \frac{i}{j} \rfloor}\),然后求\(f_N\ ...
- CCC2018游记
day (-1) 晚上睡觉没盖被子 day 0 2018年2月13日 下午放学回来感到一阵头痛,一量体温结果发烧了,感觉很蓝瘦,居然在CCC前一天生病. 本来注册了账号想打practise的,结果又 ...
- 核心思想:百度网盘怎么盈利(互联网的高速更新决定了:亏钱你还有点机会,放弃连门都进不了),战略预备队 good
百度做网盘很大程度就是为了防止别人依靠网盘做大和积累点技术储备.腾讯邮箱怎么赚钱?腾讯影音怎么赚钱?互联网的高速更新决定了,一些你看不起眼的软件很可能就会席卷整个市场,所以互联网大佬宁愿一些项目亏钱也 ...
- BAT有增有减 互联网2015校园…
又到一年开学季,也是毕业生开始被各种招聘.宣讲所围绕的时节. 在众多行业中,互联网在过往几年,也属于较热门的第一梯队之中.不过,在2015年的经济形势下,大家不由地疑问,互联网企业的招聘还会持续吗? ...
- 一年前的很水的渣网页(第一次html试水)
<!doctype html> <html lang="zh-cn"> <base target="_blank" /> & ...
- Anatomy of a Database System学习笔记 - 事务:并发控制与恢复
这一章看起来是讲存储引擎的.作者抱怨数据库被黑为“monolithic”.不可拆分为可复用的组件:但是实际上除了事务存储引擎管理模块,其他模块入解析器.重写引擎.优化器.执行器.访问方式都是代码相对独 ...
- 你被美国监控了,美国监控丑闻——"棱镜项目"事件
http://www.ittime.com.cn/index.php?m=content&c=index&a=show&catid=29&id=3795 “棱镜”项目所 ...
- 养活一款APP要“烧”多少钱?
Duang!又一款APP刷爆朋友圈.大片范儿的电影截图.意味深长的经典对白均出自一款名为“足记”的APP. 足记团队刚于去年8月完成天使期融资,投资方是光速创投和紫辉创投,目前正准备A轮融资.且近一周 ...
- 20201207-2 openpyxl 库与模块导入
1-1 import openpyxl # 通过文件路径,打开工作簿 wb1 = openpyxl.load_workbook('./demo_excel.xlsx') # 用 Workbook() ...
随机推荐
- UNP学习第六章(二)
一.描述符就绪条件 对于引起select返回套接字“就绪”的条件我们必须讨论得更明确: (1)满足一下塞个条件中的仍和一个时,一个套接字准备好读. a)该套接字接收缓冲区中的数据字节数不大于等于套接字 ...
- Qt 无法连接mysql数据库的问题
错误信息: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL ...
- hdu1059&poj1014 Dividing (dp,多重背包的二分优化)
Problem Description Marsha and Bill own a collection of marbles. They want to split the collection a ...
- TextView详解
android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web /email/phone/map/all)android: ...
- 生成函数小结——[ EGF ][ ln 的一个套路 ][ 概率生成函数 ]
看了jcvb的WC2015交流课件.虽然没懂后面的复合逆部分,但生成函数感觉受益良多. 指数生成函数 集合中大小为 i 的对象的权值是 \( a_i \) ,该集合的生成函数是 \( \sum\lim ...
- iOS 完全复制UIView
如果要完全复制一个UIView和对象的时候可以使用对象序列化方法 // Duplicate UIView - (UIView*)duplicate:(UIView*)view { NSData * t ...
- Python | 安装和配置智能提示插件Anaconda (转)
作为Python开发环境的Sublime Text 3,有了Anaconda就会如虎添翼.Anaconda是目前最流行也是最有威力的Python代码提示插件. 工具/原料 Sublime Text ...
- c++简单String类实现
#include <iostream> #include <string> using namespace std; class String { public: String ...
- 巧妙的使用jmeter来发送json格式数据
1. header-manager 修改content-type值. 如果不修改该值, 则默认会是urlencode的数据格式(例如a=5&b=6). 修改为json后,会告诉服务器,发送的数 ...
- MySQL中的关系
关系 将实体与实体的关系,反应到最终数据库表的设计中来.将关系分为三种:一对一,一对多(多对一)和多对多.所有的关系都是指的是表与表之间的关系. 一对一 一张表中的一条记录一定只能与另外一张表的一条记 ...