數學 省選四校聯考 開開車

2021-09-13 11:20:28 字數 1448 閱讀 6073

這題超有(e)趣(xin)的。。。(又是一道結論題。。。)

結論:對於乙個三角劃分(即題目中的劃分方式),每次選擇一條劃分的邊,將全圖分為兩個多邊形,再各自選擇一條劃分的邊,遞迴操作,一定存在某種方案,使得在很小的層數內全部劃分為三角形。。。

有了這個結論,這題就很好做了。

可以每次選擇那條邊後,其左側的點到達右側的點一定經過這兩個點中的乙個,因此只需要把這兩個點到達所有其他點的最短路求出來。

詢問的時候,一直找到將詢問點分為兩部分的那一層,然後直接回答即可。

複雜度o((

n+q)

∗層數)

o((n+q)*層數)

o((n+q

)∗層數

) 關於這個層數的數量級,博主不嚴謹地證明認為應該是log

32nlog_^n

log23​

n​的級別,如果讀者有嚴謹證明,請務必告訴我。

#include

#include

#include

#include

#include

#include

#define sf scanf

#define pf printf

#define maxn 100010

#define maxm 200000

using

namespace std;

struct node

}return res;

}void

add_point

(int x)

void

add_edge

(int u,

int v)

}tree[maxm]

;queue<

int> q;

void

bfs(

int stx,vector<

int>

&dist,vector

int>

>

&a)}}}

int ncnt;

void

build

(int id)

build

(pl)

;build

(pr);}

intquery

(int id,

int x,

int y)

if(u<=l||u>=r)

}int

main()

ncnt=1;

build(1

);sf(

"%d"

,&m)

;int x,y;

for(

int i=

1;i<=m;i++

)}

四校省選 Round 1

題解就不寫了。但是是非常值得反思的兩場考試。完全按照省選模擬出來的兩場。最近的考試狀態一直很差勁,這兩場暴露的細節更加致命。尤其是 day2 t1 很早就讀出了題意寫了正解,對拍也打好了。結果離散化陣列沒開二倍,直接炸成10分。昨天的題 t1 也是類似的問題。推出30分的寫法,結果 bsgs 上界寫...

四校聯考 20171001

二分 期望得分 70 實際得分 10 列舉最高的高度可能為多少 二分。o logm 列舉最高高度應該位於哪一列上.o n 左右擴散列舉出需要用的積木總數,與m相比較。容易發現合法的高度的最高值,最終需要搭建乙個金字塔。1,3,5,7 正解是預處理出每一列作為最高列的左右邊界。然後再二分最大高度。ch...

四校聯考(20170910)

ditoly出的題目果然喪,待我一天啃一題。廢話不多說,開更 我是分割線 t1 最大值 max 問題描述 小c有n個區間,其中第i個區間為 li,ri 小c想從每個區間中各選出乙個整數,使得所有選出的數and起來得到的結果最大,請你求出這個值。輸入格式 第一行乙個正整數n,表示區間個數。接下來n行,...