【Usaco2016 FEB】Fenced In
来源:互联网 发布:人脸姿态估计源码 编辑:程序博客网 时间:2024/05/16 06:02
首先,大膜htn
然后,分析一下。
实际上,画个图,一下就可以找出规律了。
我们可以先处理出每一段门的费用,再排序,根据题目的特殊性,可以知道整个一行或一列的费用都可以很方便的表示出来。
根据最小生成树的思想,每次可以找出最小的费用,显然将那一整行都连通一定是最优的。然后进一步分析,又可以看到一个问题。每次打开的时候,如果本来就有连通的,就不用打开了。这个问题很容易可以解决,因为我们每一次都是开的一行或一列的门,可以找出规律:第一次开横行或者竖行的门,肯定是所有的门都要开的。我们再来考虑横行,如果不是第一次开,并且有些竖行已经被打开了,那么我们就只需要开本来要开的数减去竖行行数加上一的门的数量了。竖行也是一样。于是这题就解决了
上代码
#include<cstdio>#include<algorithm>#define ll long longusing namespace std;const int maxn = 25000 + 10;int ys[maxn], xs[maxn], right, up, numx, numy;void Readin(){ scanf("%d %d %d %d", &right, &up, &numx, &numy); for(int i = 1; i <= numx; i ++) scanf("%d", &xs[i]); sort(xs + 1, xs + numx + 1); xs[++ numx] = right; for(int i = numx; i >= 1; i --) xs[i] = xs[i] - xs[i - 1]; sort(xs + 1, xs + numx + 1); for(int i = 1; i <= numy; i ++) scanf("%d", &ys[i]); sort(ys + 1, ys + numy + 1); ys[++ numy] = up; for(int i = numy; i >= 1; i --) ys[i] = ys[i] - ys[i - 1]; sort(ys + 1, ys + numy + 1);}void Solve(){ int cnt = 0, pointerx = 1, pointery = 1, countx = 0, county = 0; ll ans = 0; bool havex = 0, havey = 0; while(cnt < numx * numy - 1){ if(xs[pointerx] < ys[pointery]){ if(!havey || !havex){ cnt += numy - 1; ans += 1ll * (numy - 1) * xs[pointerx]; } else{ cnt += numy - countx; ans += 1ll * (numy - countx) * xs[pointerx]; } havey = 1; county ++; pointerx ++; } else{ if(!havex || !havey){ cnt += numx - 1; ans += 1ll * (numx - 1) * ys[pointery]; } else{ cnt += numx - county; ans += 1ll * (numx - county) * ys[pointery]; } havex = 1; countx ++; pointery ++; } } printf("%I64d", ans);}void Check(){ for(int i = 1; i <= numx; i ++) printf("%d ", xs[i]); printf("\n"); for(int i = 1; i <= numy; i ++) printf("%d ", ys[i]); printf("\n");}int main(){ freopen("fencedin.in", "r", stdin); freopen("fencedin.out", "w", stdout); Readin();// Check(); Solve(); return 0;}
0 0
- 【Usaco2016 FEB】Fenced In
- 【Usaco2016 FEB】Fenced In 题解
- 【最小生成树】【并查集】[USACO2016 金组]Fenced In
- USACO 2016 Feb Fenced In 最小生成树
- 【Usaco2016 FEB】Load Balancing
- BZOJ4409: [Usaco2016 Feb]Circular barn
- BZOJ4411: [Usaco2016 Feb]Load balancing
- 【Usaco2016 FEB】Load Balancing【线段树 + 二分】
- BZOJ 4412/Usaco2016 Feb Circular Barn(构造)
- [BZOJ 4412] [Usaco2016 Feb]Circular Barn
- [BZOJ 4409] [Usaco2016 Feb]Circular barn
- BZOJ4411——[Usaco2016 Feb]Load balancing
- 【BZOJ】4413: [Usaco2016 Feb]Milk Pails bool型dp
- 【最小生成树】[USACO 2016 February Contest, Gold]Fenced In
- [扫描线 线段树上二分] BZOJ 4411 [Usaco2016 Feb]Load balancing
- Feb
- FEB
- bzoj4576【Usaco2016 Open】262144
- tomcat 解压后无法访问
- 【VS开发】四大图像库:OpenCV/FreeImage/CImg/CxImage
- elf_i386或elf_x86_64:没有那个文件或目录 解决方法
- 时间格式化
- 轻松把玩HttpClient之封装HttpClient工具类(六),封装输入参数,简化工具类
- 【Usaco2016 FEB】Fenced In
- IT资讯---------查看文章
- 开源框架spring详解-----AOP的深刻理解(1)
- Elasticsearch官方文档导航
- 111. Minimum Depth of Binary Tree
- Material Design -- TextInputLayout
- 韩顺平XML学习1
- 2015,一直在路上
- complex.h尽可能注释