模拟试——repair
来源:互联网 发布:vb页面跳转 编辑:程序博客网 时间:2024/05/21 02:35
题目大意:
在N个城市中选择M个来开维修店,求选择哪些城市开维修店可以使得离维修店最远的那个城市离维修店的距离尽量小。给出N个城市的坐标(城市的坐标是唯一的),求出这个最小的距离。
对于50%的数据,1 ≤ M ≤ N ≤ 10,-100 ≤ X,Y ≤ 100;
对于所有的数据,1 ≤ M ≤ N ≤ 20,-1000 ≤ X,Y ≤ 1000。
题解:
根据数据我们不然发现裸搜即可。
先用勾股定理计算2点之间距离,然后每一次搜索,如果当前在该城市修维修站对结果有影响,就在当前城市修一个。
然后每次修完M个以后就判断一下当前中的最大值。
然后拿最大值跟答案对比找个最小值。
var a:Array [0..21,0..21] of real; x,y,mix:array [0..21] of real; i,j,n,m,max:longint; pq,ans:real;procedure dfs(dep,num:longint);var p,q:array [0..21] of real; i,j:longint; k:boolean;begin if num+(n-dep+1)<m then exit; if num=m then begin pq:=0; for i:=1 to n do if mix[i]>pq then pq:=mix[i]; if ans>pq then ans:=pq; end; for i:=dep to n do begin k:=false; p:=mix; for j:=1 to n do if mix[j]>a[i,j] then begin mix[j]:=a[i,j]; k:=true; end; if k then begin dfs(i+1,num+1); mix:=p; end; end;end;begin assign(input,'repair.in'); reset(input); assign(output,'repair.out'); rewrite(output); readln(n,m); for i:=1 to n do readln(x[i],y[i]); for i:=1 to n do for j:=1 to n do a[i,j]:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j])); for i:=1 to n do mix[i]:=5000; ans:=5000; dfs(1,0); writeln(ans:0:2); close(input); close(output);end.
阅读全文
1 0
- 模拟试——repair
- Poj3253—Fence Repair
- poj3253——Fence Repair
- POJ3253——Fence Repair
- POJ3253——Fence Repair
- poj3253——Fence Repair
- poj3253——Fence Repair(哈夫曼)
- 刷题——Fence Repair POJ
- repair
- POJ—3253—Fence Repair—【贪心】【优先队列】
- HDU2124——Repair the Wall(贪心水题)
- POJ——3253 Fence Repair(优先队列)
- POJ 3253 Fence Repair(贪心—霍夫曼树or优先队列)
- HDU Problem—2124 Repair the Wall 【贪心】
- poj3253 Fence Repair —huffman&&贪心(离散数学233)
- XYNUOJ 1246 Repair the Wall —贪心算法
- 【转载】leveldb源码分析—Recover和Repair
- 模拟试——knumber
- java基础点
- leetCode刷题记录 Sort Colors
- 快速排序——复习
- Frament+ViewPager
- jquery全解(1)
- 模拟试——repair
- 计算机网络总结
- js中onblur和onfocus事件(用于文本框)
- 余弦计算相似度度量【转】 此博文包含图片(2014-11-17 10:18:40)转载▼ 标签: 数学 基础 自然语言处理分类: 学习 http://blog.csdn.net/u0121606
- Spring 03
- Django 1.8.2 文档
- Spring 各个jar包的作用
- [CF600E]Lomsat gelral
- Ubuntu下用apt-get安装最新版本的Redis