BZOJ 3714: [PA2014]Kuglarz kruskal
来源:互联网 发布:coc黑胖数据 编辑:程序博客网 时间:2024/05/02 11:29
3714: [PA2014]Kuglarz
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 654 Solved: 374
[Submit][Status][Discuss]
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
知道了第x~y个杯子的奇偶性,就相当于知道了x和x-1之间的缝到y和y+1之间的缝的奇偶性
知道了缝a到缝b的奇偶性和缝b到缝c的奇偶性,我们就知道了缝a到缝c的奇偶性
要知道所有杯子底下有没有球,我们就要知道每个杯子左右两端的缝之间的奇偶性,也就相当于要知道任意两个缝之间的奇偶性
所以这就是一道花式最小生成树问题-_-知道奇偶性相当于连一条边,整个图联通了就都能知道了
Orz河伯巨神妈妈问我为什么跪在电脑前
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<ctime> #include<cmath> #include<algorithm> #include<iomanip> #include<vector> #include<map> #include<set> #include<bitset> #include<queue> #include<stack> using namespace std; #define MAXN 2010 #define MAXM 1010 #define INF 1000000000 #define MOD 1000000007 #define eps 1e-8 #define ll long long struct edg{ int x; int y; int v; friend bool operator <(edg x,edg y){ return x.v<y.v; } }; int f[MAXN]; edg e[MAXN*MAXN]; int tot; ll ans; int n; int fa(int x){ return f[x]==x?x:f[x]=fa(f[x]); } void kruskal(){ int i; for(i=0;i<=n;i++){ f[i]=i; } sort(e+1,e+tot+1); for(i=1;i<=tot;i++){ if(fa(e[i].x)!=fa(e[i].y)){ ans+=e[i].v; f[fa(e[i].x)]=fa(e[i].y); } } } int main(){ int i,j; scanf("%d",&n); for(i=0;i<n;i++){ for(j=i+1;j<=n;j++){ scanf("%d",&e[++tot].v); e[tot].x=i; e[tot].y=j; } } kruskal(); 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
- --总结加一个完整的可运行的Thrift例子
- SSH学习——声明式事物管理(Spring)
- LINUX进程管理
- spring service 层调用service 层是否合理
- 设计模式:单例模式(十一)
- BZOJ 3714: [PA2014]Kuglarz kruskal
- STM32f103 读LIS302DL传感器X、Y、Z轴向寄存器
- mongodb安装和命令行基本操作
- 使用jquery easyui实现一个基本的页面布局
- Java clone方法详解
- Android之error: void value not ignored as it ought to be(In function 'callMethod2')解决办法
- man用法
- Angular开发必备的TypeScript基础
- 拓扑排序