SCOI2009 生日蛋糕

2022-07-25 18:57:10 字數 2167 閱讀 8844

每一切只能平行於一塊蛋糕的一邊(任意一邊),並且必須把這塊蛋糕切成兩塊。

這樣,要切成 n 

塊蛋糕,

必須切 

n-1 

次。為了使得每塊蛋糕看起來漂亮,我們要求 n 

塊蛋糕的長邊與短邊的比值的最大值最小。

求出這個比值。

最大最小≈二分答案。。。。

然後搜尋判定,dfs(xx,yy,limit,nn)表示要把長寬為xx,yy切成nn塊蛋糕,答案不超過limit是否可行。

view code

1

program

cake(input,output);

2var

3x,y,n:longint;

4answer:double;

5s:double;

6procedure

init;

7begin

8readln(x,y,n);

9 s:=x*y/n;

10end;11

12function

max(aa,bb:double):double;

13begin

14if aa>bb then

15exit(aa);

16exit(bb);

17end;18

19function

min(aa,bb:double):double;

20begin

21if aathen

22exit(aa);

23exit(bb);

24end;25

26function

can(xx,yy,limit:double;nn:integer):boolean;

27var

28i,j :longint;

29x1,y1,x2,y2:double;

30begin

31if nn=1

then

32begin

33if max(xx,yy)/min(xx,yy)<=limit then

34exit(true);

35exit(false);

36end;37

for i:=1

to nn>>1

do38

begin

39 x1:=s*i/yy;

40 x2:=s*(nn-i)/yy;

41 can:=can(x1,yy,limit,i) and can(x2,yy,limit,nn-i);

42if can then

43exit;

44 y1:=s*i/xx;

45 y2:=s*(nn-i)/xx;

46 can:=can(xx,y1,limit,i) and can(xx,y2,limit,nn-i);

47if can then

48exit;

49end;50

exit(false);

51end;52

procedure

main;

53var

54ll,rr,mid:double;

55begin

56 ll:=0.00000000

;57 rr:=99999999999;58

while rr-ll>1e-7

do59

begin

60 mid:=(ll+rr)/2;61

if can(x,y,mid,n) then

62 rr:=mid

63else

64 ll:=mid;

65end

;66 writeln(rr:0:6

);67

end;

68begin

69 assign(input,'

cake.in

');reset(input);

70 assign(output,'

cake.out

');rewrite(output);

71init;

72main;

73close(input);

74close(output);

75end.

SCOI2009 生日禮物

傳送門 本來想用二分的,讀完資料之後,又發現不用了。然而需要開多乙個陣列p pp記錄顏色最近出現的位置,以便進行玄學操作 當達成目標 now en dnow end now e nd 時,if now end while l.col a l p l 因為a l co la l col a l c o...

SCOI2009 生日快樂

windy的生日到了,為了慶祝生日,他的朋友們幫他買了乙個邊長分別為 x 和 y 的矩形蛋糕。現在包括windy 一共有 n 個人來分這塊大蛋糕,要求每個人必須獲得相同面積的蛋糕。windy主刀,每一切只能平行於一塊蛋糕 的一邊 任意一邊 並且必須把這塊蛋糕切成兩塊。這樣,要切成 n 塊蛋糕,win...

SCOI2009 生日快樂(搜尋)

description windy的生日到了,為了慶祝生日,他的朋友們幫他買了乙個邊長分別為 x 和 y 的矩形蛋糕。現在包括windy,一共有 n 個人來分這塊大蛋糕,要求每個人必須獲得相同面積的蛋糕。windy主刀,每一切只能平行於一塊蛋糕的一邊 任意一邊 並且必須把這塊蛋糕切成兩塊。這樣,要切...