Description

在一个大小为1000*1000的区域中,有n个固定点,m棵tree 。 现在你要建一个围栏来保护tree,建它的费用为你选用的固定点的个数 *20和 你没有圈进围栏的tree*111. 现在希望这个值越小越好. 3<=N<=100. 1<=M<=100

Input

第一行给出n,m 下面开始n行,给出固定的坐标 下面开始m行,给出tree的坐标

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的更多相关文章

  1. BZOJ 1391 [Ceoi2008]order

    1391: [Ceoi2008]order Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完 ...

  2. BZOJ 1391: [Ceoi2008]order [最小割]

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1509  Solved: 460[Submit][Statu ...

  3. Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1105  Solved: 331[Submit][Statu ...

  4. bzoj1390 [CEOI2008] Fence

    题意 给出n个白点和m个黑点.现在你需要选择一些白点把黑点圈起来.每有一个黑点不能被选出的白点组成的凸包包含就需要付出111的代价,每选出一个白点就需要付出20的代价.要求最小化代价之和 n,m< ...

  5. bzoj 1391 [Ceoi2008]order(最小割)

    [题意] 有n个有偿工作选做,m个机器,完成一个工作需要若干个工序,完成每个工序需要一个机器,对于一个机器,在不同的工序有不同的租费,但买下来的费用只有一个.问最大获益. [思路] 对于工作和机器建点 ...

  6. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  7. 【BZOJ】【1391】【CEOI2008】order

    网络流/最小割 暴力建图就好了……S->i 容量为收益,i->j+n 容量为租金,j+n->T容量为购买所花的钱. 如果亏钱的话那么割掉的就是收益,表示不赚钱. 如果租金大于购买所花 ...

  8. BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板

    题目 1724: [Usaco2006 Nov]Fence Repair 切割木板 Time Limit: 5 Sec  Memory Limit: 64 MB Description Farmer ...

  9. [BZOJ 1724] Fence Repair

    这大概是BZOJ里除了A+B Problem最水的一道题了吧 题面:http://www.lydsy.com/JudgeOnline/problem.php?id=1724 这道题其实有一些思路还是可 ...

随机推荐

  1. sgu 183. Painting the balls 动态规划 难度:3

    183. Painting the balls time limit per test: 0.25 sec.memory limit per test: 4096 KB input: standard ...

  2. hdu3613

    题解: EX_KMP 网上似乎说kmp也可以,但是我交了一发代码没过 然后标记一下哪一些前缀和后缀会问 暴力枚举拆开了的位置 代码: #include<cstdio> #include&l ...

  3. POJ 3251 Big Square

    A quite challenging problem,最终看了题解才写出来,惭愧 /*Sample Input 6 J*J*** ****** J***J* ****** **B*** ****** ...

  4. ipython与sublime调用其shell出现的问题

    本机电脑 win10 已安装python3.5 1.    直接在命令行运行 pip install ipython[all] 安装 ipython 安装完成后 在命令行输入 jupyter note ...

  5. L242

    They provide a means of keeping track of the thousands of journal papers that are published monthly ...

  6. Alpha阶段敏捷冲刺---Day6

    一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 今天的任务标志着我们项目进入收尾阶段,今天将完成大部分程序的功能,例如主界面设计,彻底完成计算模块,服务器随机生成题目等等,这些任 ...

  7. cocos2dx 不同平台上加载文件

    原文转自:http://blog.sina.com.cn/s/blog_62b2318d0101eozt.html cocos2dx在不同平台上读取资源文件时的处理方式是不同的. 在ios下,程序调用 ...

  8. C++中特殊的宏定义

    常规用法不再介绍,做如下几点说明和介绍 1. 带参数的宏只完成简单字符替换,之前不做计算实参的工作,如下 #define SUM(x,y) x+yint a=3,b=2,c=1;int s;s=SUM ...

  9. ZEDGRAPH画图心得

    OleDbConnection odcConnection = new OleDbConnection(MyConnectionString); //打开连接 C#操作Access之按列读取mdb o ...

  10. 1.1.2A+B for Input-Output Practice (II)

    A+B for Input-Output Practice (II) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768  ...