樹狀陣列(sb了)。求出靜止狀態下,每個點能看到多少個向右開的船c1[i],多少個向左開的船c2[i]。
max即為答案。從後往前列舉i即可。
注意要離散化,否則會tle。
1 #include 2 typedef longview codelong
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 }
更新:sb了,要樹狀陣列幹什麼用。。反正是要求出 每個點 能看到的船隻數,直接做一遍字首和累加一下就可以了。。。樹狀陣列都省了。
**如下:
1 #include 2 typedef longview codelong
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 }
百度之星複賽題解
problem description 眾所周知,度度熊非常喜歡數字。它最近在學習小學算術,第一次發現這個世界上居然存在兩位數,三位數 甚至n位數!但是這回的算術題可並不簡單,由於含有表示bomb的 號,度度熊稱之為 arithmetic of bomb。bomb number中的bomb,也就是 ...
2016 百度之星 複賽 拍照
小明在旅遊的路上看到了一條美麗的河,河上有許多船隻,有的船隻向左航行,有的船隻向右航行。小明希望拍下這一美麗的風景,並且把盡可能多的船隻都完整地拍到一張 中。小明位於河的邊上,並且可以在河邊的任意位置進行拍照,照相機的視野恰好為90度角,只能以垂直於河邊的方向進行拍照。河上的船隻全都可看作是平行於河...
2014百度之星複賽解題報告複賽 Race
race 時間限制 10s 記憶體限制 64mb 問題描述 度度熊最近參加了一場勁跑比賽,但是這個勁跑比賽的規則比較特殊。比賽方預先在地上畫了一些橫線和豎線 可以認為這些線為無限長的直線 要求選手從指定的位置出發,在最短時間內按照規定的順序經過所有的直線 只要到達直線上的任意一點即為經過 為了幫助度...