BZOJ 3714 [PA2014]Kuglarz Kruskal
来源:互联网 发布:oracle数据库防火墙 编辑:程序博客网 时间:2024/05/17 13:11
Description
魔术师的桌子上有n个杯子排成一行,编号为1,2,…,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品。花费c_ij元,魔术师就会告诉你杯子i,i+1,…,j底下藏有球的总数的奇偶性。
采取最优的询问策略,你至少需要花费多少元,才能保证猜出哪些杯子底下藏着球?
Input
第一行一个整数n(1<=n<=2000)。
第i+1行(1<=i<=n)有n+1-i个整数,表示每一种询问所需的花费。其中c_ij(对区间[i,j]进行询问的费用,1<=i<=j<=n,1<=c_ij<=10^9)为第i+1行第j+1-i个数。
Output
输出一个整数,表示最少花费。
Sample Input
5
1 2 3 4 5
4 3 2 1
3 4 5
2 1
5
1 2 3 4 5
4 3 2 1
3 4 5
2 1
5
Sample Output
7
HINT
Source
传送门
一道很巧妙的题目。首先我们知道(a,b),(a,c) b>c,这两段的奇偶性已知,
那么(b+1,c)的奇偶性也是知道的。
我们可以在这种区间花费的地方建立边,
那么说明两个已经连通的点之间的价值是不必取的。
这个有点类似于生成树的思想。
还有一个结论。。就是……
好吧我也不太确定,,可能是我智商太低= =
就是要猜出所有的球,必须知道每一个杯子的奇偶性,这样就可以全部确定了。
所以对于c[a,b],从(a-1)向b连一条花费为c[a,b]的边,
然后从0~n跑最小生成树即可。
想说一句我的kruskal是丑吗??
怎么12000+ms(笑哭)
#include<bits/stdc++.h>#define ll long longusing namespace std;int read(){ int x=0,f=1;char ch=getchar(); while (ch<'0' || ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}const intN=2005, M=2000005;int n,tot,fa[N];struct Edge{int L,R,num;}E[M];bool cmp(Edge x,Edge y){return x.num<y.num;}int getfa(int x){if (fa[x]!=x) fa[x]=getfa(fa[x]);return fa[x];}bool unn(int x,int y){int t1=getfa(x),t2=getfa(y);if (t1==t2) return 1;else{fa[t2]=t1;return 0;} }int main(){n=read(); tot=0;for (int i=1;i<=n;i++)for (int j=i;j<=n;j++)E[++tot].L=i-1,E[tot].R=j,E[tot].num=read();sort(E+1,E+1+tot,cmp);for (int i=0;i<=n;i++) fa[i]=i;ll ans=(ll)0;for (int i=1;i<=tot;i++){if (unn(E[i].L,E[i].R)) continue;ans+=E[i].num;}printf("%lld\n",ans);return 0;}
阅读全文
0 0
- BZOJ 3714 PA2014 Kuglarz Kruskal
- BZOJ 3714: [PA2014]Kuglarz kruskal
- BZOJ 3714 [PA2014]Kuglarz Kruskal
- 【BZOJ 3714】 [PA2014]Kuglarz
- BZOJ 3714 [PA2014]Kuglarz
- [bzoj-3714][PA2014]Kuglarz 题解
- 【BZOJ 3714】[PA2014]Kuglarz 最小生成树
- bzoj 3714: [PA2014]Kuglarz 最小生成树
- 3714: [PA2014]Kuglarz
- 3714: [PA2014]Kuglarz
- 3714: [PA2014]Kuglarz
- 3714: [PA2014]Kuglarz|贪心|思路题
- 【BZOJ】【P3714】【PA2014】【Kuglarz】【题解】【最小生成树】
- bzoj3714【PA2014】Kuglarz
- 【PA2014】【BZOJ3714】Kuglarz
- BZOJ3714 [PA2014]Kuglarz
- BZOJ3714 [PA2014]Kuglarz
- bzoj3714: [PA2014]Kuglarz
- python安装使用
- HDU-1598 find the most comfortable road
- 风一更,雪一更,聒碎乡心梦不成,故园无此声。
- 【Java编程】数组反序
- 配置Sublime Test 3在控制台编译运行java,c,c++
- BZOJ 3714 [PA2014]Kuglarz Kruskal
- Oracle之char类型-yellowcong
- Android常用库
- 关于mybatis-generator配置文件解析失败的坑
- HTTP POST请求报文格式分析与Java实现文件上传
- Git学习笔记 chapter02--版本回退
- Mycat源码篇 : 起步,Mycat源码阅读调试环境搭建
- 题目 poj – 1426(A题)
- DOM节点之nodeType