BZOJ3714 PA2014 Kuglarz 最小生成树
题意:有$N$个盒子,每个盒子中有$0$或$1$个球。现在你可以花费$c_{i,j}$的代价获得$i$到$j$的盒子中球的总数的奇偶性,求最少需要多少代价才能知道哪些盒子中有球。$N \leq 2000 , 1 \leq c \leq 10^9$
初赛凉了,乖乖回来更以前没写的blog qwq
设$s_i$为盒子中球数的前缀和$(s_0 = 0)$,那么我们花费$c_{i,j}$就是得到$s_{i-1}$与$s_j$的关系,而我们知道$s_i,s_j$与$s_j,s_k$的关系之后,就能知道$s_i$与$s_k$的关系。我们可以考虑使用并查集维护这个关系,然后:咦这不就是$Kruskal$吗?然后跑遍最小生成树就出来了
反正我是有生之年不会想到这道题和最小生成树相关的了QuQ
还有Prim用堆优化真心卵用没有
#include<bits/stdc++.h>
#define MAXN 2001
using namespace std;
inline int read(){
;
;
char c;
fread(&c , , stdin);
while(!isdigit(c)){
if(c == '-')
f = ;
fread(&c , , stdin);
}
while(isdigit(c)){
a = (a << ) + (a << ) + (c ^ ');
fread(&c , , stdin);
}
return f ? -a : a;
}
int Edge[MAXN][MAXN];
bool vis[MAXN];
priority_queue < pair < int , int > > q;
int main(){
;
int N = read();
; i <= N ; i++)
for(int j = i ; j <= N ; j++)
Edge[i - ][j] = Edge[j][i - ] = read();
q.push(make_pair( , ));
while(!q.empty()){
int t = q.top().second;
if(vis[t]){
q.pop();
continue;
}
ans += -q.top().first;
vis[t] = ;
q.pop();
; i <= N ; i++)
if(!vis[i])
q.push(make_pair(-Edge[t][i] , i));
}
cout << ans;
;
}
BZOJ3714 PA2014 Kuglarz 最小生成树的更多相关文章
- 【BZOJ3714】[PA2014]Kuglarz 最小生成树
[BZOJ3714][PA2014]Kuglarz Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,…,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获 ...
- bzoj3714: [PA2014]Kuglarz
[PA2014]KuglarzTime Limit: 20 Sec Memory Limit: 128 MBSubmit: 553 Solved: 317[Submit][Status][Discus ...
- bzoj 3714 [PA2014]Kuglarz 最小生成树
[PA2014]Kuglarz Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1335 Solved: 672[Submit][Status][Di ...
- BZOJ3714 [PA2014]Kuglarz 【最小生成树】
题目链接 BZOJ3714 题解 我们如果知道了所有的数,同样就知道了所有的前缀和 相反,我们如果求出了所有前缀和,就知道了所有的数,二者是等价的 对于一个区间\([l,r]\)如果我们知道了前缀和\ ...
- [bzoj3714] [PA2014] Kuglarz(最小生成树)
我们考虑这个题...思路比较神仙. 就是我们设\(sum[i]\)为前i个的区间里的情况,然后我们知道\(sum[j]\)的话,我们就可以知道\(j-i\)的情况了 所以说这很像最小生成树里面的约束条 ...
- 【kruscal】【最小生成树】【并查集扩展】bzoj3714 [PA2014]Kuglarz
ORZ:http://www.cnblogs.com/zrts/p/bzoj3714.html #include<cstdio> #include<algorithm> usi ...
- [BZOJ3714][PA2014]Kuglarz(MST)
题目: Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,…,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子 ...
- 【BZOJ3714】Kuglarz(最小生成树)
[BZOJ3714]Kuglarz(最小生成树) 题面 BZOJ Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,-,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯 ...
- [PA2014]Kuglarz
[PA2014]Kuglarz 题目大意: 有一个长度为\(n(n\le2000)\)的0/1串,你可以花\(c_{i,j}\)的钱,询问区间\([i,j]\)的异或和.问至少要多少元才能知道原来的序 ...
随机推荐
- ArcGIS for Server 的修改IP问题
ArcGIS for Server 的修改IP问题 1. [arcgisserver@centos6 ~]$ vi /home/arcgisserver/serverconfig/config ...
- ActiveReports公开课开启报名,学习如何解决中国式复杂报表难题
ActiveReports实战教学 90分钟解决中国式复杂报表六大需求 [开课时间]4月19日 [主讲老师]葡萄城资深报表专家 [培训方式]网络在线公开课 报名地址
- Linux 学习笔记之超详细基础linux命令 Part 6
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 5----------------- ...
- REPLACE函数的使用方法
Replace函数的含义~ 用新字符串替换旧字符串,而且替换的位置和数量都是指定的. replace函数的语法格式 =Replace(old_text,start_num,num_chars,new_ ...
- Ubuntu18.04 更换源
在虚拟机新建一个Ubuntu18.04.1-live-server-amd64当做服务器 在安装软件时报错: slave@slave:~$ sudo -s[sudo] password for sla ...
- Linux防火墙基础与编写防火墙规则
Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,raw表,mangle表,nat表,filter表,每个表容器内包括不同的规则链,根 ...
- 转:tcpdump抓包分析(强烈推荐)
转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666539134&idx=1&sn=5166f0aac71 ...
- kafka集群管理工具kafka-manager部署安装
一.kafka-manager 简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager.这个管理工具可以很 ...
- 改变javascript函数内部this指针指向的三种方法
在查了大量的资料后,我总结了下面的三条规则,这三条规则,已经可以解决目前我所遇到的所有问题.规则0:函数本身是一个特殊类型,大多数时候,可以认为是一个变量. function a() { alert( ...
- 多个Activity和Intent
Intent是Android应用程序组件之一,在Android系统当中表示一种意图,Intent中包含了一组信息: 最重要的内容是action(动作)和data(数据) Component name ...