[USACO16FEB]围栏Fenced In Platinum
题目:洛谷P3141。
题目大意:有一个方形区域,被分成若干区域。现在要去掉若干条围栏,使得所有区域连通,求最少去掉多少长度的围栏。
解题思路:贪心。建议画图思考。
先对围栏位置进行排序,然后相邻两条求差,再对差排序。
可以知道,每次取的是最短的一条围栏,结果一定是最优的(横向和竖向也要最短的优先),所以直接整行整列删即可。
但是全删了就会造成浪费,如果两个块已经连通,则不需要建边,所以乘的时候要注意。
然后求出答案即可。具体见代码。
注意64位整数。
C++ Code:
#include<cstdio>
#include<algorithm>
#include<cctype>
#include<cstring>
using namespace std;
int A,B,n,m,a[25050],b[25050],x[25050],y[25050];
inline int readint(){
char c=getchar();
for(;!isdigit(c);c=getchar());
int d=0;
for(;isdigit(c);c=getchar())
d=(d<<3)+(d<<1)+(c^'0');
return d;
}
int main(...){
A=readint();B=readint();n=readint();m=readint();
for(int i=1;i<=n;++i)
a[i]=readint();
for(int i=1;i<=m;++i)
b[i]=readint();
sort(a+1,a+n+1);
sort(b+1,b+m+1);
a[0]=b[0]=0;
memset(x,0x3f,sizeof x);
memset(y,0x3f,sizeof y);
for(int i=1;i<=n;++i)
x[i]=a[i]-a[i-1];
x[n+1]=A-a[n];
for(int i=1;i<=m;++i)
y[i]=b[i]-b[i-1];
y[m+1]=B-b[m];
sort(x+1,x+n+2);
sort(y+1,y+m+2);
long long ans=(long long)x[1]*m+(long long)y[1]*n;
int i=2,j=2;
for(;i<=n+1&&j<=m+1;)
if(x[i]<y[j])ans+=(long long)x[i++]*(m-j+2);
else ans+=(long long)y[j++]*(n-i+2);
printf("%lld\n",ans);
return 0;
}
[USACO16FEB]围栏Fenced In Platinum的更多相关文章
- P3141 [USACO16FEB]围栏Fenced In_Platinum
题目描述 Farmer John has realized that many of his cows are strangely agoraphobic (being fearful of larg ...
- 地理围栏算法解析(Geo-fencing)
地理围栏算法解析 http://www.cnblogs.com/LBSer/p/4471742.html 地理围栏(Geo-fencing)是LBS的一种应用,就是用一个虚拟的栅栏围出一个虚拟地理边界 ...
- 【GPS】 数据围栏
1.记录gps信息,定位类型 gps agps ,偏移量 2.根据id检索用户 gps 历史记录 3.创建围栏 4.围栏内用户检索(先实现 圆形和矩形) 5.判断一个点是否进出围栏 应用场景: o ...
- WordPress Platinum SEO插件跨站脚本漏洞
漏洞名称: WordPress Platinum SEO插件跨站脚本漏洞 CNNVD编号: CNNVD-201309-398 发布时间: 2013-09-24 更新时间: 2013-09-24 危害等 ...
- NDK下 将Platinum SDK 编译成so库 (android - upnp)
Platinum UPnP SDK 是一个跨平台的C++库,利用该库,可以很容易就构建出DLNA/UPnP控制点(DLNA/UPnP Control Point)和DLNA/UPnP设备(DLNA/U ...
- 基于Platinum库的DMS实现(android)
接上篇博文:基于Platinum库的DMR实现(android) 文章讲述了如何使用Platinum库实现DMR 今天同样使用该库,来讲解一下DMS的实现 关于该库如何编译,请参考这篇博文:NDK下 ...
- 关于Platinum库的MediaRender具体C++代码实现探讨
接上篇博文 NDK下 将Platinum SDK 编译成so库 (android - upnp) 讲述了如何利用该代码库编译给android程序调用的so库,其中也提到了,在使用sample-upnp ...
- iOS地理围栏技术的应用
遇到一个需求,要求监测若干区域,设备进入这些区域则要上传数据,且可以后台监测,甚至app被杀死也要监测.发现oc的地理围栏技术完美匹配这个需求,任务做完了,把遇到的坑记录下来,也许能帮到你呢. 要做这 ...
- 【Android Developers Training】 106. 创建并检测地理围栏
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
随机推荐
- 推荐几个bootstrap 后端UI框架
转载地址 https://blog.csdn.net/u013816448/article/details/81563051
- Volatile variables
Volatile variables apply another type of memory constraint to individual variables. The compiler oft ...
- FCC编程题之中级算法篇(下)
介绍 本篇是"FCC编程题之中级算法篇"系列的最后一篇 这期完结后,下期开始写高级算法,每篇一题 目录 1. Smallest Common Multiple 2. Finders ...
- VUE项目axios请求头更改Content-Type
const httpServer = (opts, data) => { const token = localStorage.getItem('token') const PUBLIC = ` ...
- laravel 5.5 项目报错
报错内容: ErrorException (E_WARNING) Declaration of App\Observers\SiteObserver::updated($site) should be ...
- BZOJ 2154/2693 Crash的数字表格/jzptab (莫比乌斯反演)
题目大意:求$\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$的和 易得$\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{gcd(i,j)}$ 套 ...
- centos 7.1安装frees witch
http://blog.sina.com.cn/s/blog_539d6e0c0102zgvm.html
- jquery 遍历 table 下所有得tr td
$("#middle").contents().find("tbody tr").each(function(i,n){ var child = $(this) ...
- 【CS-4476-project 6】Deep Learning
AlexNet / VGG-F network visualized by mNeuron. Project 6: Deep LearningIntroduction to Computer Visi ...
- HTTP 文件共享服务器工具 - chfs
CuteHttpFileServer/chfs是一个免费的.HTTP协议的文件共享服务器,使用浏览器可以快速访问.它具有以下特点: 单个文件,整个软件只有一个可执行程序,无配置文件等其他文件 跨平台运 ...