10 01模擬賽訂正

2022-05-01 04:24:09 字數 1143 閱讀 2512

好吧,這是我第一次寫模擬賽的訂正,主要是有時間而且這次的題確實好...

第一題確實好,用的演算法人人都會,就是看你能不能想到,我考只打了o(n^4)的暴力,最後還苦逼的mle,爆零了...

暴力就不多說了...列舉兩個點更新其他的點...

其實我考場上思考的是,能被標記的點都與其他的點有什麼聯絡,可惜,除了模擬題目的做法,就不會了...

那讓我們就認真地思考一發:我們設a(x1,x2),b(x2,c2),c(x3,c3)來更新d點,只有:有兩個點橫座標相等,有兩個點縱座標相等,才可以更新出來乙個新的點...

那我們看更新之後又出現了什麼結果,還是有兩個點橫座標相等,有兩個點縱座標相等,這是就要思考了或許我們不必列舉點,而應該在行列之間大做文章...

之後,根據網格題的經驗,我們就連邊,即點a被標記,那我們將行列連邊,之後,我們在手玩一下a,b,c點就會發現,點d的行列已經聯通了...而這就用到了並查集...

其實我們再想想就知道為什麼會是這樣的,因為每個被標記的點都其實提供一種行與列的關係,當兩個對角線的點出現時,目標點的x與y都已經被代表,而此時再出現乙個頂點,就將目標點的行列聯通了...

而這裡有體驗到了並查集的魅力,即維護關係的合併與查詢,而這種關係則需要我們慧眼挖掘...

還有網格題的行列建圖則也是一種好的思路,因為圖論中大量的演算法我們就能利用了...

#includeusing

namespace

std;

const

int n=5100

;int f[n*2

],n,m,q,sum[n][n];

inline

intread()

while(isdigit(ch))

return x*ff;

}inline

int getf(int k)

intmain()

for(register int i=1;i<=n;++i)

for(register int j=1;j<=n;++j)

for(register int i=1;i<=q;++i)

return0;

}

9 23 模擬賽訂正題解

感覺是真的有點鬼畜啊這題目 來自我這個同學的小聲bb 好了 我這個同學又來訂正題目了 t1 驚現數學必修五 數列 裂項相消的 關於帶根號的放縮 別問我怎麼知道的 考試前數學老師發的學案上 印著我們oi考試的t1 很痛心 不上數學課的我 不過 即使沒有那個學案也能搞出來這個題目 因為 只要讀題了 我們...

第三次模擬賽 訂正題解

這次考試是乙個圖論專練,從海亮回來圖論已經搞了好幾個月了,感覺有些問題的思想還是要好好揣摩一下,理解思路才能知道怎麼做 第一題 第一遍沒看見有向圖,建了個圖跑了個tarjan,後來發現讀錯題,我們來看一下謎一樣的水資料,這o n m 的複雜都能過 隨便寫乙個dfs吧,當前點遍歷到的點的個數 1,如果...

《省賽模擬賽補》

c題 比賽的時候已經想到了統計最底層的每個序列的出現次數,但是一開始想的是建圖之後dfs處理,但是發現很難處理出來。其實正確的思路是拓撲排序去處理次數。我們在最後建圖完成之後,倒著從n回去拓撲即可。但是這裡有個坑點,就是一開始統計入度可能是不正確的。例如 3 1 2 4 1 2 3是1,2的父節點,...