NOIP集訓 10月19日

2022-06-02 06:36:08 字數 2929 閱讀 2176

今天的資料夾:10月19日.zip

今天中午講了一下昨天的題,還是有水平的。

下午複習搜尋,居然有noi難度的題,不過給了講解,也有參考程式,就不多說了。主要說說第一題。

t1:這是道bfs練手題,但都寫不對。第乙個難點是讀入,雖然題目中給的讀入順序很嚇人,但仔細想想,就類似於「字典序比較」了。在pascal中可以直接這樣讀入:

for i:=1

to l do

for j:=1

to w do

for k:=1

to h do

read(a[i,j,k]);

**:

1

program

scan;

2var

3l,w,h,m:longint;

4 a,b:array[-1..51,-1..51,-1..51] of

longint;

5i,j,k:byte;

6n,left,right:longint;

7x0,y0,z0:byte;

8 queue:array[1..1000000,1..3] of

byte;

9procedure

clear();

10begin

11 left:=1

;12 right:=0;13

end;

14procedure

enque(x,y,z:longint);

15begin

16inc(right);

17 queue[right,1]:=x;

18 queue[right,2]:=y;

19 queue[right,3]:=z;

20 b[x,y,z]:=n;

21end;22

procedure

deque();

23begin

24inc(left);

25end;26

function

check(t:longint):boolean;

27begin

28if (x0<1)or(x0>l)or(y0<1)or(y0>w)or(z0<1)or(z0>h) then

29exit(false);

30if b[x0,y0,z0]>0

then

31exit(false);

32if abs(a[x0,y0,z0]-t)<=m then

33exit(true)

34else

35exit(false);

36end;37

procedure

bfs(x,y,z:longint);

38begin

39clear();

40enque(x,y,z);

41while (left<=right) do

42begin

43 x:=queue[left,1

];44 y:=queue[left,2

];45 z:=queue[left,3

];46

deque();

47 x0:=x-1; y0:=y; z0:=z;

48if check(a[x,y,z]) then

49enque(x0,y0,z0);

50 x0:=x+1; y0:=y; z0:=z;

51if check(a[x,y,z]) then

52enque(x0,y0,z0);

53 x0:=x; y0:=y-1; z0:=z;

54if check(a[x,y,z]) then

55enque(x0,y0,z0);

56 x0:=x; y0:=y+1; z0:=z;

57if check(a[x,y,z]) then

58enque(x0,y0,z0);

59 x0:=x; y0:=y; z0:=z-1;60

if check(a[x,y,z]) then

61enque(x0,y0,z0);

62 x0:=x; y0:=y; z0:=z+1;63

if check(a[x,y,z]) then

64enque(x0,y0,z0);

65end;66

end;

67begin

68 assign(input,'

scan.in');

69reset(input);

70 assign(output,'

scan.out');

71rewrite(output);

72readln(l,w,h,m);

73for i:=1

to l do

74for j:=1

to w do

75for k:=1

to h do

76read(a[i,j,k]);

77 fillchar(b,sizeof(b),0

);78 n:=0;79

for i:=1

to l do

80for j:=1

to w do

81for k:=1

to h do

82if b[i,j,k]=0

then

83begin

84inc(n);

85bfs(i,j,k);

86end;87

writeln(n);

88close(input);

89close(output);

90end.

scan.pas

ACM集訓日記 8月10日

今天開啟了新的篇章,開始做暑假訓練二了,這個專題都是二分法和單調佇列和樹狀陣列,今天做了兩道二分,感覺還行,可能是因為我挑了兩道比較簡單的題目做了吧,二分法也算是複習了,二分法主要是三個值狀態的變化,最大high,最小low,中間mid的不停變化達成搜尋的目的,並且時間比列舉快,要注意的一點是要套用...

C 筆記2023年10月19日

楊輝三角 using system using system.collections.generic using system.linq using system.text namespace sj101901 列印數字 for int j 0 j i j else 需要計算空格的個數,防止大面積重...

10月29日10月30日

蜷縮著,蜷縮著,便是四年。丟去的是光陰,丟不去的是你。接連幾天看了一部網路 很久沒這樣看網路 了,原因是室友在看網路 的網劇 實在無聊就去翻了翻 結果 後面 癮就來了 3w 的txt檔案一天晚上看到了3點 第二天起來 搬工作室 頭也沒洗 任自己邋遢 狂躁 第二天晚上看到了1點 早上起來接著看 終於 ...