珂朵莉給你乙個無向圖,每次查詢的時候給一堆二元組(xi
,yi)
(xi
,yi
)求圖中有多少個點u
u與至少乙個這次詢問給出的二元組(xi
,yi)
(xi
,yi
)滿足dis
t(u,
xi)≤
yidi
st(u
,xi
)≤yi
,dist
dist
表示這兩個點在圖中的距離
如果不連通dis
t=in
fdis
t=in
f第一次寫出來yno
iyno
i的題。雖然這是ynoi為數不多的良心題(霧設p[
i][j
]p[i
][j]
表示距離點i
i最短路長度不超過j
j的節點集合,那麼我們只要求出長度等於j
j的節點集合,然後或上p[i
][j−
1]p[
i][j
−1]即可。
對於每乙個點進行一次bfs
bfs即可求出pp。
然後對於每一次詢問,其實答案節點集合就是p[x
1][y
1]or
p[x2
][y2
]or.
..or
p[xt
][yt
]p[x
1][
y1]
orp[
x2]
[y2
]or.
..or
p[xt
][y
t]。
pp的型別是c++
c++自帶的bit
setb
itse
t。每一位只能是0或1,占用空間1b1
b。時間複雜度玄學。
還有洛谷討論區中說這道題似乎卡鄰接表。。。用vec
torv
ecto
r存邊即可。
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int n=
1010
,m=100010
,inf=
1e9;
int n,m,q,x,y,t,tot,dis[n]
;bitset p[n]
[n];
vector<
int> e[n]
;inline
intread()
inline
void
bfs(
int s)}}
for(
register
int i=
1;i) p[s]
[i]|
=p[s]
[i-1];
}signed
main()
for(
register
int i=
1;i<=n;i++
)bfs
(i);
while
(q--
)printf
("%d\n"
,ans.
count()
);}return0;
}
hrbust 1948我又回來了 基礎bfs
我又回來了 time limit 1000 ms memory limit 32768 k total submit 165 68 users total accepted 66 58 users rating special judge no description 小輝穿越到了乙個很適合他的年代...
洛谷八連測R7 nzhtl1477 我回來了
68號島有n個商店,有的商店直接有小路連線,小路的長度都為1,格里克告訴了你哪些地方可能有做黃油蛋糕的原料。但是那個人是個坑貨,所以他會告訴你一些商店,然後告訴你距離這些商店距離 k的商店中都是可能有原料的。然後你要把這些可能的商店每個都去一遍,你想知道你要去多少個商店。由於你是勇者,所以有m次詢問...
洛谷P3958 乳酪 bfs
題解 先對球按照高度 即z zz座標 排個序,對於每個球,我們對與它相交或者相切的球建邊,然後從最下面的球開始bfs bfsbf s就好了。坑點 有可能與下表面相交或相切的不止乙個,還有距離要用double include using namespace std struct ball a 1010...