3714: [PA2014]Kuglarz
来源:互联网 发布:怎么做白羊座红颜知已 编辑:程序博客网 时间:2024/05/18 11:25
题目链接
题目大意:一个01序列,花费
求最少花费多少钱可以还原这个序列
题解:把前缀和数组当作点
知道sum(i,j)的奇偶性=知道sum[j]-sum[i-1]的奇偶性
还原序列=知道所有sum[]的奇偶性
发现这个东西是可以互推的,所以把所有点联通就可以了
我的收获:神奇建模……区间和转前缀和端点
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int M=2005;#define rep(i,x,y) for(int i=x;i<=y;i++)int n,t,z,cnt;int f[M];long long ans;struct edge{int u,v,val;}e[M*M];bool operator <(edge a,edge b){return a.val<b.val;}void add(int x,int y,int z){e[++t].u=x,e[t].v=y,e[t].val=z;}int find(int x){return f[x]==x?x:f[x]=find(f[x]);}void uniom(int x,int y,int z){ x=find(x),y=find(y); if(x!=y) f[x]=y,ans+=z,cnt++;}void kruskal(){ sort(e+1,e+1+t); rep(i,1,n) f[i]=i; rep(i,1,t){ uniom(e[i].u,e[i].v,e[i].val); if(cnt==n) break; }}void work(){ kruskal(); cout<<ans<<endl;}void init(){ cin>>n; rep(i,1,n) rep(j,i,n) cin>>z,add(i-1,j,z);}int main(){ init(); work(); return 0;}
阅读全文
0 0
- 【BZOJ 3714】 [PA2014]Kuglarz
- 3714: [PA2014]Kuglarz
- 3714: [PA2014]Kuglarz
- 3714: [PA2014]Kuglarz
- BZOJ 3714 [PA2014]Kuglarz
- BZOJ 3714 PA2014 Kuglarz Kruskal
- BZOJ 3714: [PA2014]Kuglarz kruskal
- BZOJ 3714 [PA2014]Kuglarz Kruskal
- [bzoj-3714][PA2014]Kuglarz 题解
- 3714: [PA2014]Kuglarz|贪心|思路题
- 【BZOJ 3714】[PA2014]Kuglarz 最小生成树
- bzoj 3714: [PA2014]Kuglarz 最小生成树
- bzoj3714【PA2014】Kuglarz
- 【PA2014】【BZOJ3714】Kuglarz
- BZOJ3714 [PA2014]Kuglarz
- BZOJ3714 [PA2014]Kuglarz
- bzoj3714: [PA2014]Kuglarz
- 【bzoj3714】[PA2014]Kuglarz
- 万能近似定理(universal approximation theorrm)
- H5-indexeddb-promised
- 样式测试点持续更新中
- windows 监控 MySQL 查询记录
- 单链表的基本操作
- 3714: [PA2014]Kuglarz
- CentOS 定时执行脚本配置
- join on 和where 一起使用的细节
- 网络判断
- Redux 异步数据流方案对比
- ionic侧边栏
- linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
- python处理车牌字符数据
- python-函数参数