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() ...
随机推荐
- 【LeetCode 37】解数独
题目链接 [题解] 回溯法搞一下. 用set和数组下标判重. [代码] class Solution { public: set<int> myset[9]; int hang[9][10 ...
- JDK各个版本比较
JDK5 自动装箱与拆箱: 枚举 静态导入,如:import staticjava.lang.System.out 可变参数(Varargs) 内省(Introspector) 主要用于操作JavaB ...
- Vue使用lib-flexible,将px转化为rem
1.下载lib-flexible 我使用的是vue-cli+webpack,所以是通过npm来安装的 npm i lib-flexible --save 2.引入lib-flexible 在main. ...
- Javascript 数组 数字 字符串 时间等使用
1.Javascript 数组API 1. //定义数组 2. var pageIds = new Array(); 3. pageIds.push('A'); 5. 数组长度 6. pageIds. ...
- IE8 indexOf
因为ie8中的js数组没有indexOf方法,所以使用之前要先加入这段js代码 if (!Array.prototype.indexOf) { Array.prototype.indexOf = fu ...
- (3)C++复合类型
存储数据时必须跟踪的三个属性:信息储存在何处,存储的值,存储的类型 一.数组 #include <iostream> using namespace std; int main() { / ...
- 1、jQuery操作Dom
1.添加元素 <code> <script language="JavaScript">$().ready(function(){$("input ...
- 【转】Java类MemoryUsage查看虚拟机的使用情况
原文地址:https://www.cnblogs.com/xubiao/p/5465473.html Java类MemoryUsage,通过MemoryUsage可以查看Java 虚拟机的内存池的内存 ...
- thymeleaf数组下标
<tr th:if="${exercisers != null}"th:each="exerciser:${exercisers}"> <td ...
- #include和前置声明(forward declaration)
#include和前置声明(forward declaration) 1. 当不需要调用类的实现时,包括constructor,copy constructor,assignment opera ...