33 条题解
-
1tracy-henry LV 10 @ 2009-08-04 22:03:52
快排从左下到右上排,若是中心对称,则连接第i和n-i个点的线段的中点都相同。
都相同就输出这个公共中点,否则无解。
ps:快排一定要用middle的那种,否则一个点202,一个点超时.....................................................无语了
-
02009-10-11 22:26:56@
哪位大牛解释一下读入的数组及排序用real就一个点106
而这两个用longint就ac??? -
02009-10-06 22:24:32@
CAO
什么嘛。。“!” -
02009-11-07 21:06:20@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
快排+判断=AC
program p1100;
type arr=array [1..20000] of longint;
var
n,p,q:longint;
t1,t2:real;
a,b:array [1..20000] of longint;
procedure qsort(var a:arr;l,r:longint);
var i,j,m,p:longint;
begin
i:=l; j:=r;
m:=a[l];
repeat
while a[i]m do dec(j);
if ij;
if l=q then writeln('V.I.P. should stay at (',t1:0:1,',',t2:0:1,').') else writeln('This is a dangerous situation!');
end else writeln('This is a dangerous situation!');
end. -
02009-08-17 18:14:36@
此题 较水 。
我的做法:
先排序 按照 横坐标优先 然后纵坐标 从小到大排。
然后 取 头 和 尾的两个坐标 和 /2 看是不是一直 是同一个值。
如果是 则有解,否则 无解。
注:
1、题目 害人!!!标点符号问题:
if(anst)
printf("V.I.P. should stay at (%.1f,%.1f).\n",xans1,yans1);
else
printf("This is a dangerous situation!\n");
2、我用 C++ 接入数据时用 int除2时 直接用除完赋值 double型,没想到 他的除法用的是Int的除法将 小数部分省略掉了。。。。。。血的教训~~!!一定要强制转换!!
xans = (double(x[s[0]]+x[s[n-1]]))/2;
yans = (double(y[s[0]]+y[s[n-1]]))/2;
3、我循环 反正 循环到了 n/2+1
我循环到 n/2-1时它有一个点不过。。。。
for(int i = 0;i -
02009-08-17 16:26:40@
我倒
int compare(Point a,Point b) {____int p;____return (p=b.x-a.x)?p:(b.y-a.y);}超时
#define compare(a,b) ____(((a).x-(b).x)?((a).x-(b).x):((a).y-(b).y))0ms
宏就是跑得比函数快
-
02009-08-11 12:39:59@
From 1s
保卫峰会编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 25ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:25msConst MAXPTS = 100000;
Type
TPoint = Record X, Y: Integer; End;Var Pts : Array [1..MAXPTS] of TPoint;
NumPts : Integer;Function Compare (A, B: TPoint) : Boolean;
Begin
If (A.X < B.X) then Compare := True
else If (A.X > B.X) then Compare := False
else Compare := (A.Y 15) then
Med := Middle (Pts[L+3], Pts[R-3], Pts[(L+R) div 2 + 2]);
While (L < R) do
Begin
While (L < R) and Compare (Pts[L], Med) do Inc (L);
While (L < R) and not Compare (Pts[R], Med) do Dec (R);
If (L < R) then
Begin
X := Pts[L]; Pts[L] := Pts[R]; Pts[R] := X;
End;
End;
if Compare (Pts[L], Med) and (L < RX) then
Inc (L)
else
Dec (R);
QuickSort (LX, R);
QuickSort (L, RX);
End;
End;Function BinSearch (X: TPoint) : Integer;
Var L, R, I: Integer;
Begin
L := 1; R := NumPts;
While (L < R) do
Begin
I := (L+R) div 2;
If Compare (X, Pts) then R := I else L := I+1;
End;
If (X.X = Pts[L].X) and (X.Y = Pts[L].Y)
then BinSearch := L else BinSearch := 0;
End;Function Solve (Var TwiceX, TwiceY: Integer) : Boolean;
Var SX, SY: Integer;
I: Integer;
X: TPoint;
Begin
Solve := false;
QuickSort (1, NumPts);
SX := 0; SY := 0;
For I := 1 to NumPts do
Begin
SX := SX + Pts.X;
SY := SY + Pts.Y;
End;
If ((SX*2) mod NumPts = 0) and ((SY*2) mod NumPts = 0) then
Begin
SX := (SX*2) div NumPts;
SY := (SY*2) div NumPts;
Solve := true;
For I := 1 to NumPts do
Begin
X := Pts;
X.X := SX - X.X;
X.Y := SY - X.Y;
If (BinSearch (X) = 0) then Solve := false;
End;
End;
TwiceX := SX;
TwiceY := SY;
End;Var I: Integer;
X, Y: Integer;Begin
ReadLn (NumPts);
If (NumPts > 0) then
Begin
For I := 1 to NumPts do
ReadLn (Pts.X, Pts.Y);
If Solve (X, Y) then
WriteLn ('V.I.P. should stay at (', X div 2, '.', (X mod 2) * 5,
',', Y div 2, '.', (Y mod 2) * 5, ').')
else
WriteLn ('This is a dangerous situation!');
End;
End.Flag Accepted
题号 P1601
类型(?) 其它
通过 60人
提交 299次
通过率 20%
难度 1提交 讨论 题解
-
02009-08-10 20:59:27@
猥琐……太猥琐了!
明明是'!',题目上写得却是'.'……我的AC率啊!{————————————————————————}
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-08-07 23:02:08@
恩。。
经过鉴定。。此题巨水。。
先来点证明,然后再来点提示:
先证明传说中的最佳位置的横坐标只能是横坐标最大点与最小点的中点:
采用反证法证明,设a1为横坐标最大点的横坐标,a2为横坐标最小点的横坐标,若命题不成立,即存在ai,aj使得a1+ai=a2+aj=2x,则移项得a1-aj=a2-ai。由于a2是a中的最小值,即a2-ai -
02009-08-07 21:18:56@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
tmd FUCK!
那个tion后面是"!".
BS! -
02009-08-05 10:59:26@
Accepted 有效得分:100 有效耗时:0ms
没有语.输出格式中的V.I.P只有两个.而样例中P后面也有.。。。
双关键字快排...什么是middle?MS加了函数判断大小就AC了.. -
02009-08-05 10:46:25@
这题目...
无语
交了N遍 -
02009-08-05 09:13:33@
交了9次,汗……
-
02009-08-04 20:22:27@
快排从左下到右上排,若是中心对称,则连接第i和n-i个点的线段的中点都相同。
都相同就输出这个公共中点,否则无解。
ps:快排一定要用middle的那种,否则一个点202,一个点超时。 -
02009-08-04 12:37:21@
用快排就202……
+了个限定就AC了 -
02009-08-01 18:24:41@
先求出重心。因为坐标都是整数,所以给坐标从上到下、从左到右排个序,然后每次看看正数第i个跟倒数第i个是不是对称就行。
-
02009-08-01 00:32:35@
题目骗人了,This is a dangerous situation后面是感叹号,而不是句号。
-
02009-07-31 20:31:29@
有puppy还是不能秒杀,有大牛帮助ac效率高很多啊
-
02009-08-06 18:13:29@
第一反应是convex hull~ 确实可以做~
然后~ 看到各位神牛的题解了~
于是决定不写Graham了“快排要取中?”我的快排都是随机的~
-
02009-08-01 19:53:49@
透露个独家消息
输出'This is a dangerous situation!有75分哦
神牛们尽情BS我
谁能教我二分。。