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]\)的异或和.问至少要多少元才能知道原来的序 ...
随机推荐
- web全栈架构师[笔记] — 03 html5新特性
HTML5新特性 一.geolocation PC端 精度比较低 通过IP库定位 移动端 通过GPS window.navigator.geolocation 单次 getCurrentPositio ...
- vue.js及项目实战[笔记]— 01 vue.js
一. vue基础 1. 历史介绍 angular 09年,年份较早,一开始大家是拒绝的 react 2013年,用户体验较好,直接拉到一堆粉丝 vue 2014年,用户体验较好 前端框架与库的区别 j ...
- Salesforce小知识:累计汇总字段类型
累计汇总字段类型的定义 Salesforce中可以在两个对象之间建立关系.一个对象的某一条记录可以有若干条相关联的其他对象记录. 累计汇总字段可以将这些相关联的记录中的某些字段值汇总起来,显示给用户. ...
- 超简单,Centos7 安装 rabbitMQ
首先声明,本人是Linux新手一枚.经历了在阿里云Centos上部署rabbitMQ与重装的痛苦经历,后多方查找终于找到了简单方法.Linux高人来说请跳过本篇文章,新手可以试试. 1.设置Cento ...
- 面向对象的封装与隐藏 this
当我们创建一个对象的时候,我们可以通过‘对象.属性’的方式,对对象的属性进行赋值. 这里赋值操作要受到属性的数据类型和存储范围的制约,但是除此之外,没有其他制约条件. 但是实际问题中我们需要给这个属性 ...
- 编写一个BAT脚本协助运维人员遇到问题时候调测数据库是否有效连接成功的操作攻略
简单摘要: 1.内网系统出现故障需要排查 2.运维人员不熟悉数据库操作,没法通过连接数据库和执行SQL语句的方式排查数据库及数据是否正常 3.解决方案:编写一个bat脚本,运维人员双击运行即可. ...
- Linux远程访问及控制(SSH)
1.ssh协议:用于远程登录,端口号:22/tcp 配置文件: 1)服务器端口:/etc/ssh/sshd_config 2)客户端 :/etc/ssh/ssh_config 2.服务器监听选项: U ...
- Hp电脑开机报错:no boot disk has been detected or the disk has failed
hp主机开机报错no boot disk has been detected or the disk has failed,重启之后没有作用,开机之后仍然是同样界面.考虑是硬盘问题,按ESC+F10 ...
- 记录:一个SQL SERVER奇怪的问题。
今天遇到了一个奇怪的问题.始终没搞清楚是怎么回事.先记一下 1.首先有张表a,包含字段 编号.日期(varchar(250)),数值 发生日期字段有非正常日期字符串,有NULL,空字符串,可能是误触键 ...
- Lua与C交互之基础操作(1)
@(语言) Lua是一个嵌入式的语言,可以Lua可以作为程序库用来扩展应用的功能,也可以注册有其他语言实现的函数,这些函数可能由C语言(或其他语言)实现,可以增加一些不容易由Lua实现的功能.这就是L ...