20180824Noip模擬賽10分總結

2022-07-13 03:48:08 字數 3376 閱讀 8358

嗯,總之,是我太傻了。

我真傻,真的,我單知道最小生成樹,卻不知道還有最大生成樹

最大生成樹....

累加每乙個環內,最大生成樹的邊權,(對環求最大生成樹,則必然剩下乙個邊權最小的邊(因為是求生成樹,所以這個邊肯定不會被算上))

然後因為對於不同聯通塊,跑最大生成樹,彼此之間依舊無法有想連線的邊,所以對於森林跑最大生成樹是沒有問題的

最後所有邊的邊權和 減去 所有聯通塊的最大生成樹的邊權和 即可得到答案

最小生成樹性質之一:最大邊權最小

最大生成樹性質之一:最小邊權最大

最後是吐槽:我寫了4kb的dfs,瘋狂地dfs,使用各種奇奇怪怪的操作,並且計算的複雜度是允許的!最後好不容易調過了樣例

最後因為陣列開的太大,直接mle,連正確性都不知道....

ac**如下:

我t1為了完成sb的4kb的超暴力搜尋,花費了差不多2個小時的時間,然後看到這道題後,我一眼以為是乙個博弈論...

然後我又想了想,覺得自己的題意好像出鍋了....

然後就按照貪心思想完成了乙個dfs,最後貪心順利騙到10分...

dp題意:

最優策略指:差值最大

因為我們在某個位置選或是不選由[i+1, i+m]中的狀態推導來的,也就是說,我們要保證下乙個人取得是最優策略。

但是我們正序進行的話,我們無法保證當前狀態是最優策略,所以我們倒序進行

劃分階段:

以進行每個點i為階段

f[i]表示,在當前回合,選擇數ai時,所能得到的最大得分

新增狀態

正常操作:

f[i][0]表示到第i個數時,該棋子為大魔王選時,你的得分減去大魔王的得分

f[i][1]表示到第i個數時,該棋子為你選時,你的得分減去大魔王的得分

f[i][0] = max - a[i]

f[i][1] = min + a[i]

也就是說要維護f[k][1]和f[k][0]在[i-m, i-1]的單調性

倒序與第一題一樣

優化1:空間優化

假定第ai個數必須取,f[i]表示若選擇一定選擇第ai個數,當前的人和對方的最大差值

因為每個人都取最優策略,所以選擇第ai個數我們能夠得到的分數是

f[i] = ai - max(j ∈ [i+1, i+m])

可得方程f[i] = ai - max(j ∈ [i+1, i+m])

因為f[j]是對方的最大差值,我們選擇了a[i],則我們要計算自己的得分,就要用a[i] - max

優化2:時間優化:

(1)單調佇列維護單調性:好寫,**量小

(2)線段樹取區間最大值,正常操作,顯然

不得不說,樣例就是sb,我最初以為是只能從根節點出發

然後我就寫了個樹dp的暴力,然後就爆0了

後來才知道,是求的直徑.....

暴力思路:

對於每一次詢問,都手動封點,求樹的直徑

能拿50%的分

正解思路:不會,回來補吧....

noip模擬賽 密碼

表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...

NOIP模擬賽 老師

題目描述 一座有n層的教學樓裡有一些學生,第i 0 i n 層有studentsi個學生。你被給定了乙個數k,如果第i層有x個學生,那麼這一層需要 x k 個老師。你可以調整每個學生的樓層,但是每個學生至多只能調整一層,就是說第i層的學生只能去第i 1層 如果有的話 第i層 第i 1層 如果i 1 ...

NOIP模擬賽 分錢

題目描述 兩個人在街上撿到了一些錢,這些錢共有n張,他們等了很久也沒有等來失主,於是決定把錢平分。但錢可能無法平分。他們先把能夠平分的錢盡量先平分了,使得剩下不能平分的錢盡量少。這些不能平分的錢怎麼辦呢他?他們決定拿去賭場裡面賭一把。他們運氣太好了,那些不能平分的錢變成了雙倍,於是他們就把那個錢分了...