博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pku1944 Fiber Communications
阅读量:6258 次
发布时间:2019-06-22

本文共 2455 字,大约阅读时间需要 8 分钟。

有一个圆上有n个点,有m个要求,分别是(a,b)表示a与b要联通,每个点只能和它左右的点连线,问最少连多少个线段(相邻两点之间连的一条线算1条线段)。

最多要连n-1条线,整个圆上的点都联通,所以枚举不连哪一条线段,算出此时最小的线段数即可。算的时候用next[i]记录i点向后连边的终点,求和的时候就能很快了。

View Code
1 {
$inline on} 2 program pku1944(input,output); 3 type 4 node = record 5 x,y : integer; 6 end; 7 var 8 n,p : integer; 9 answer : integer; 10 a : array[0..10001] of node; 11 next : array[0..1001] of integer; 12 procedure swap(var aa,bb: integer ); inline; 13 var 14 t : integer; 15 begin 16 t:=aa; 17 aa:=bb; 18 bb:=t; 19 end; {
swap } 20 procedure init; inline; 21 var 22 i : integer; 23 begin 24 readln(n,p); 25 for i:=1 to p do 26 begin 27 readln(a[i].x,a[i].y); 28 if a[i].x>a[i].y then 29 swap(a[i].x,a[i].y); 30 end; 31 end; {
init } 32 procedure sort(p,q :longint ); inline; 33 var 34 i,j,m1,m2 : integer; 35 begin 36 i:=p; 37 j:=q; 38 m1:=a[(i+j)>>1].x; 39 m2:=a[(i+j)>>1].y; 40 repeat 41 while (a[i].x
m1)or((a[j].x=m1)and(a[j].y>m2)) do 44 dec(j); 45 if i<=j then 46 begin 47 swap(a[i].x,a[j].x); 48 swap(a[i].y,a[j].y); 49 inc(i); 50 dec(j); 51 end; 52 until i>j; 53 if i
p then sort(p,j); 55 end; {
sort } 56 procedure main; inline; 57 var 58 i,j : integer; 59 xx,yy : integer; 60 sum : integer; 61 begin 62 answer:=maxint; 63 for i:=1 to n do 64 begin 65 sum:=0; 66 fillchar(next,sizeof(next),0); 67 for j:=1 to p do 68 if (a[j].x
=i) then 69 begin 70 if a[j].x>next[1] then 71 next[1]:=a[j].x; 72 if next[a[j].y]
0 then 82 begin 83 xx:=j; 84 yy:=next[j]; 85 break; 86 end; 87 inc(sum,yy-xx); 88 for j:=xx+1 to n do 89 begin 90 if next[j]=0 then 91 continue; 92 if j>yy then 93 begin 94 inc(sum,next[j]-j); 95 xx:=j; 96 yy:=next[j]; 97 end 98 else 99 if next[j]>yy then 100 begin 101 inc(sum,next[j]-yy); 102 xx:=j; 103 yy:=next[j]; 104 end; 105 end; 106 if sum

转载于:https://www.cnblogs.com/neverforget/archive/2012/03/29/2422957.html

你可能感兴趣的文章
关于贴友的一个书本页面简单布局(html+css)的实现
查看>>
input 内容发生改变时触发事件
查看>>
IOS之表视图单元格删除、移动及插入
查看>>
转载翻译简介:关于Flash and C++ Native Extension C++扩展ANE——2
查看>>
【Android】10.4 卡片视图
查看>>
虚化技术的额外开销
查看>>
JS 中 call 和 apply 的理解和使用
查看>>
Codeforces Round #256 (Div. 2)
查看>>
20172309_《程序设计与数据结构(下)》_课堂测试修改报告。
查看>>
Linux发邮件之mail命令
查看>>
113 - Power of Cryptography 浮点数 pow()函数
查看>>
ES6中的Promise使用方法与总结
查看>>
生成文件的MD5、SHA、SHA256
查看>>
(二十九)方法调用之解析
查看>>
Springboot文件上传与下载
查看>>
Windows 8开发 WinRT 对ZIP文件解压缩及文件夹的ZIP压缩
查看>>
博客园
查看>>
Activity与Fragment数据传递之Fragment从Activity获取数据 分类: ...
查看>>
libFM 简介
查看>>
非均衡数据分布的分类问题
查看>>