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 这道题其实有一些思路还是可 ...
随机推荐
- js相关小技巧
1.清空type=file的input文件上传控件的内容,相当于重置.txtFile是该input的id $("#txtFile").val(""); $(&q ...
- (C/C++学习笔记) 十. 函数
十. 函数 ● 基本概念 函数 函数定义 function definition: return_type function_name ( parameter list ) { Body of fun ...
- vue 和 react 选择
经典 react 还是有其优点的, 生态更丰富, 更容易 测试 和 调试, 更适合超大型应用, 更适合app, weex不一定能到达 reactNative的高度 而vue , 更为直观, 上手 ...
- cocos2d-x 2.0.2升级后某些函数变化(转)
最近看cocos2d-x 2.0.2发布后升级了一下,升级后发现又出现了很多错误,原来有一些地方的代码用法改变了.在修改代码的过程中,简单做了一些记录,当做是一个备忘录. 1.CCScene和CCLa ...
- 导出导入grafana完整的dashboard(非单个图表)
导出很简单,如下图操作即可 导入
- c++ 中 char 与 string 之间的相互转换问题
第一部分: 将 char * 或者 char [] 转换为 string 可以直接赋值,转换. 第二部分: 将 string 转换为 char * 或者 cha ...
- TF-IDF算法(1)—算法概述
假设现在有一篇很长的文章,要从中提取出它的关键字,完全不人工干预,那么怎么做到呢?又有如如何判断两篇文章的相似性的这类问题,这是在数据挖掘,信息检索中经常遇到的问题,然而TF-IDF算法就可以解决.这 ...
- 20155225 2016-2017-2 《Java程序设计》第五周学习总结
20155225 2006-2007-2 <Java程序设计>第五周学习总结 教材学习内容总结 使用try.catch异常处理,异常处理继承架构等 使用Collection收集对象,了解C ...
- SUST OJ 1641: 电子狗的心事
1641: 电子狗的心事 时间限制: 1 Sec 内存限制: 128 MB提交: 192 解决: 14[提交][状态][讨论版] 题目描述 计算机程序世界中有一位孤独的电子狗,这个电子狗每次只能执 ...
- CTF-练习平台-Misc之 图片又隐写
八.图片又隐写 修改后缀名为zip,打开解压出两个文件 解压发现有密码,用WinHex打开发现文件头是zip的,所以出来把后缀名改为zip,再用工具爆破 最后得到解压密码,解压后是一个图片,改后缀名为 ...