百度之星複賽Astar Round3

2022-05-06 15:00:11 字數 2182 閱讀 9316

樹狀陣列(sb了)。求出靜止狀態下,每個點能看到多少個向右開的船c1[i],多少個向左開的船c2[i]。

max即為答案。從後往前列舉i即可。

注意要離散化,否則會tle。

1 #include 2 typedef long

long

ll;3

using

namespace

std;45

const

int maxn =2e4;6//

c1 向右開的船

7int c1[maxn<<2], c2[maxn<<2];8

int s1[maxn<<2], s2[maxn<<2];9

10int lowbit(int x)

11void add(int x, int d, int* c)16}

17void add(int l, int r, int*c)

21int sum(int x, int*c)

27return

ret;28}

2930

intn;

31int

ope[maxn], tot;

32struct

p35 p(int l, int r, int

d):l(l), r(r), d(d){}

36};

37p pp[maxn];

3839

intmain()

5455 sort(ope, ope+tot);

56//

tot = unique(ope, ope+tot)-ope;

57for(int i = 0; i < n; i++)

6465

for(int i = 0; i < (maxn<<2); i++)

66 s1[i] =sum(i, c1);

67for(int i = 0; i < (maxn<<2); i++)

68 s2[i] =sum(i, c2);

6970

int ans = 0;71

for(int i = (maxn<<2)-2; i > 0; i--)

75 printf("

case #%d:\n%d\n

", ca++, ans);76}

77return0;

78 }

view code

更新:sb了,要樹狀陣列幹什麼用。。反正是要求出 每個點 能看到的船隻數,直接做一遍字首和累加一下就可以了。。。樹狀陣列都省了。

**如下:

1 #include 2 typedef long

long

ll;3

using

namespace

std;45

const

int maxn =2e4;

6int c1[maxn<<2], c2[maxn<<2];7

8void add(int l, int r, int*c)

1112

intn;

13int

ope[maxn], tot;

14struct

p17 p(int l, int r, int

d):l(l), r(r), d(d){}

18};

19p pp[maxn];

2021

intmain()

3637 sort(ope, ope+tot);

38//

tot = unique(ope, ope+tot)-ope;

39for(int i = 0; i < n; i++)

4647

for(int i = 1; i < (maxn<<2); i++)

48 c1[i] += c1[i-1], c2[i] += c2[i-1

];49

50int ans = 0;51

for(int i = (maxn<<2)-2; i > 0; i--)

55 printf("

case #%d:\n%d\n

", ca++, ans);56}

57return0;

58 }

view code

百度之星複賽題解

problem description 眾所周知,度度熊非常喜歡數字。它最近在學習小學算術,第一次發現這個世界上居然存在兩位數,三位數 甚至n位數!但是這回的算術題可並不簡單,由於含有表示bomb的 號,度度熊稱之為 arithmetic of bomb。bomb number中的bomb,也就是 ...

2016 百度之星 複賽 拍照

小明在旅遊的路上看到了一條美麗的河,河上有許多船隻,有的船隻向左航行,有的船隻向右航行。小明希望拍下這一美麗的風景,並且把盡可能多的船隻都完整地拍到一張 中。小明位於河的邊上,並且可以在河邊的任意位置進行拍照,照相機的視野恰好為90度角,只能以垂直於河邊的方向進行拍照。河上的船隻全都可看作是平行於河...

2014百度之星複賽解題報告複賽 Race

race 時間限制 10s 記憶體限制 64mb 問題描述 度度熊最近參加了一場勁跑比賽,但是這個勁跑比賽的規則比較特殊。比賽方預先在地上畫了一些橫線和豎線 可以認為這些線為無限長的直線 要求選手從指定的位置出發,在最短時間內按照規定的順序經過所有的直線 只要到達直線上的任意一點即為經過 為了幫助度...