bzoj3714: [PA2014]Kuglarz
来源:互联网 发布:d3.v4.min.js下载 编辑:程序博客网 时间:2024/05/17 13:42
链接
http://www.lydsy.com/JudgeOnline/problem.php?id=3714
题解
这题思路很神奇。
要知道每一个数,可以从前缀和的角度考虑。
如果知道了所有的前缀和,就一定能知道所有的数了,而且这两个问题一定是完全等价的,费用肯定也是一样的。
异或是可以前缀和的,考虑一个操作
显然一开始唯一知道的就是
代码
//最小生成树#include <cstdio>#include <algorithm>#define maxn 2017#define ll long longusing namespace std;int u[maxn*maxn], v[maxn*maxn], w[maxn*maxn], tot, f[maxn], num[maxn*maxn], N;ll cost;int find(int x){return x==f[x]?x:f[x]=find(f[x]);}void merge(int a, int b){f[find(a)]=find(b);}bool cmp(int a, int b){return w[a]<w[b];}void kruskal(){ int i; for(i=1;i<=tot;i++)num[i]=i; for(i=1;i<=N;i++)f[i]=i; sort(num+1,num+tot+1,cmp); for(i=1;i<=tot;i++) if(find(u[num[i]])^find(v[num[i]]))merge(u[num[i]],v[num[i]]),cost+=w[num[i]];}int main(){ int x, i, j; scanf("%d",&N); for(i=1;i<=N;i++)for(j=i;j<=N;j++)u[++tot]=i-1, v[tot]=j, scanf("%d",w+tot); kruskal(); printf("%lld",cost); return 0;}
0 0
- bzoj3714【PA2014】Kuglarz
- 【PA2014】【BZOJ3714】Kuglarz
- BZOJ3714 [PA2014]Kuglarz
- BZOJ3714 [PA2014]Kuglarz
- bzoj3714: [PA2014]Kuglarz
- 【bzoj3714】[PA2014]Kuglarz
- bzoj3714 [PA2014]Kuglarz
- 【BZOJ3714】【PA2014】Kuglarz
- bzoj3714: [PA2014]Kuglarz
- BZOJ3714: [PA2014]Kuglarz
- 【bzoj3714】【PA2014】【Kuglarz】【最小生成树】
- 最小生成树 BZOJ3714 [PA2014]Kuglarz
- 【BZOJ3714】【PA2014】Kuglarz(最小生成树)
- 【bzoj3714: [PA2014]Kuglarz】转化 ---最小生成树
- bzoj3714 [PA2014]Kuglarz(贪心+并查集)
- 【BZOJ 3714】 [PA2014]Kuglarz
- 3714: [PA2014]Kuglarz
- 3714: [PA2014]Kuglarz
- linux服务配置之DNS
- Hibernate配置文件中指定MySQL数据库的编码方式
- $("#id")与document.getElementById("id")的区别
- Caffe学习系列(5):其它常用层及参数
- linux基础学习之dns服务3-1
- bzoj3714: [PA2014]Kuglarz
- 理解递归
- 从输入url到页面展示到底发生了什么(面试常题)
- centerloss new lfw result
- Android SO 文件的兼容和适配
- Java环境配置
- 拼接html代码相对美观的方法
- Mac 上怎么双开微信
- 微信消息关键字提醒