bzoj 1390: [Ceoi2008]Fence
Description
Input
Output
输出最小费用
根据题目设定的参数,凡是可以围住的点都要围住,同bzoj1027可以转为最小环
#include<bits/stdc++.h>
struct pos{
int x,y;
void read(){
scanf("%d%d",&x,&y);
}
}ns[],ms[],cs[];
pos operator-(pos a,pos b){return (pos){a.x-b.x,a.y-b.y};}
int operator*(pos a,pos b){return a.x*b.y-a.y*b.x;}
bool operator<(pos a,pos b){return a*b<;}
int ans=,n,m,cp=;
bool in(pos w){
for(int i=;i<cp;++i)if(cs[i-]<w&&w<cs[i]){
return cs[i-]-w<cs[i]-w;
}
return ;
}
void mins(int&a,int b){if(a>b)a=b;}
int l[][];
char s[][];
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<n;++i)ns[i].read();
for(int i=;i<m;++i)ms[i].read();
for(int i=;i<n;++i)if(ns[i].x<ns[].x)std::swap(ns[i],ns[]);
pos p0=ns[];
for(int i=;i<n;++i)ns[i]=ns[i]-p0;
for(int i=;i<m;++i)ms[i]=ms[i]-p0;
std::sort(ns+,ns+n);
for(int i=;i<n;++i){
while(cp>=&&ns[i]-cs[cp-]<cs[cp-]-cs[cp-])--cp;
cs[cp++]=ns[i];
}
int p=;
for(int i=;i<m;++i){
if(!in(ms[i]))ans+=;
else ms[p++]=ms[i];
}
m=p;
if(p){
for(int i=;i<n;++i){
for(int j=;j<n;++j){
l[i][j]=0x3f3f3f3f;
if(i!=j){
bool is=;
pos d=ns[i]-ns[j];
for(int k=;k<m;++k)if(d<ms[k]-ns[j]){
is=;
break;
}
if(is)l[i][j]=;
}
}
}
for(int k=;k<n;++k)
for(int i=;i<n;++i)
for(int j=;j<n;++j)mins(l[i][j],l[i][k]+l[k][j]);
for(int i=;i<n;++i)mins(l[][],l[i][i]);
ans+=l[][]*;
}
printf("%d\n",ans);
return ;
}
bzoj 1390: [Ceoi2008]Fence的更多相关文章
- BZOJ 1391 [Ceoi2008]order
1391: [Ceoi2008]order Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完 ...
- BZOJ 1391: [Ceoi2008]order [最小割]
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1509 Solved: 460[Submit][Statu ...
- Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1105 Solved: 331[Submit][Statu ...
- bzoj1390 [CEOI2008] Fence
题意 给出n个白点和m个黑点.现在你需要选择一些白点把黑点圈起来.每有一个黑点不能被选出的白点组成的凸包包含就需要付出111的代价,每选出一个白点就需要付出20的代价.要求最小化代价之和 n,m< ...
- bzoj 1391 [Ceoi2008]order(最小割)
[题意] 有n个有偿工作选做,m个机器,完成一个工作需要若干个工序,完成每个工序需要一个机器,对于一个机器,在不同的工序有不同的租费,但买下来的费用只有一个.问最大获益. [思路] 对于工作和机器建点 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 【BZOJ】【1391】【CEOI2008】order
网络流/最小割 暴力建图就好了……S->i 容量为收益,i->j+n 容量为租金,j+n->T容量为购买所花的钱. 如果亏钱的话那么割掉的就是收益,表示不赚钱. 如果租金大于购买所花 ...
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板
题目 1724: [Usaco2006 Nov]Fence Repair 切割木板 Time Limit: 5 Sec Memory Limit: 64 MB Description Farmer ...
- [BZOJ 1724] Fence Repair
这大概是BZOJ里除了A+B Problem最水的一道题了吧 题面:http://www.lydsy.com/JudgeOnline/problem.php?id=1724 这道题其实有一些思路还是可 ...
随机推荐
- 常用docker
随便什么版本的linux 接入daocloud.io 在发现镜像中选择DockerHub 搜索对应的image,然后部署. 手动输入YAML即可 aria: image: cuteribs/aria2 ...
- Ant里面神奇的fork
最近两天一直在处理ant运行java程序的一个问题,用IDE直接运行类里面的main函数一切正常,但用ant跑该函数就报错误,错误的原因是运行ant任务时调用的是AntClasloader,而IDE里 ...
- float、clear、overflow
浮动: float: none|left|right 作用使得标签失去块级标签的独占一行效果,向某个方向靠拢 标签浮动了,也需要占地方,有时候出现未浮动的div覆盖部分浮动div是浏览器的bug情况 ...
- Windows折腾之路 兼谈纯净强迫情节
早期新鲜感 想当年,终于有了第一台属于自己自由处置的电脑,1.2Ghz的CPU,256兆的内存.这在CPU刚刚上1G的年代,不说顶级,也算主流.操作系统呢,在别人的帮助下,装上新鲜的XP,各种的华丽, ...
- 关于rimworld(边缘之地)
低缓的音乐 广阔的原野 丰富而不杂乱的地表 完美的殖民拓荒世界. 各种随机地形,丰富的资源.林木与矿产.随机生成的大世界给人真实世界的感觉. 动态而和谐的画面,随风摇摆的植被,跳跃的兔子,以及 ...
- Java不同场景oom错误探究及解决办法
1.OOM for Heap=>java.lang.OutOfMemoryError: Java heap space 分 析 此OOM是由于JVM中heap的最大值不满足需要,将设置heap ...
- Python 动态传参
def chi(zhushi, cai, fushi, tang, tiandian): print(zhushi,cai,fushi,tang,tiandian) chi("大碗大米饭&q ...
- SVN使用出现的问题及解决方案
SVN使用出现的问题及解决方案 一.问题描述: 使用TortoiseSVN-1.9.5进行CheckOut时,出现报错信息如下: Unable to connect to a repository ...
- magento小常识
magento后台设置好产品分类及添加产品后前台没有显示出来:以下几个可能: 1.首先检查网店商城的Root Category 以 及跟目录下面的子目录设置是否有误,具体在目录->管理分类-&g ...
- Robust Tracking via Weakly Supervised Ranking SVM
参考文献:Yancheng Bai and Ming Tang. Robust Tracking via Weakly Supervised Ranking SVM Abstract 通常的算法:ut ...