NOIP提高模擬 20181016 T2 華萊士

2021-08-30 02:50:37 字數 1096 閱讀 8622

本題是一道很好的題目,本來我是用乙個完全錯誤的做法做的,居然沒有被卡,得了50

pts。這麼良心的出題人很少見了。10

0pts

做法仔細觀察本題,發現題目所求是n個點

n條邊的一張圖,那麼很容易想到是乙個環套樹。如何維護環套樹?很顯然,用並查集。

判斷是否能加入一條邊時,如果這條邊的兩端已經聯通,我們需要知道這個聯通塊是否有環。 如果不連通,那麼可以加入這條邊,而且通過兩端的聯通塊是否有環可以得到新的聯通塊是 否有環。

於是我們用並查集維護連通性,額外維護聯通塊裡是否有環即可。

這樣的時間複雜度可以做到o(

(n+m

)log

n)talk is cheap, show you the code:

#include

using

namespace std;

#define n 500005

intread()

struct edge

friend

inline

bool

operator

>

(const edge &a,

const edge &b)};

priority_queue

,greater

> q;

int n,m;

int p[n]

,type[n]

,cnt;

long

long ans;

intfind

(int x)

/* 50pts玄學做法(dzy大佬說可以卡掉,然而我過了50pts,qaq)

int p[n],r[n],use[n];

bool cmp(const int i,const int j)

while

(!q.

empty()

)else}if

(cnt!=n)

puts

("no");

else

printf

("%lld\n"

,ans)

;return0;

}

NOIP提高組 20151029模擬

其實這套題目並不算太難,但是還是發揮不了100 水平。第一題直接線性篩法,求出質數,然後就可以判斷乙個數是否為質數了。這道題還可以用miller rabin去求,後者的速度較快,如果資料再大些,就要使用後者了。第二題,比賽時發現了,當n 7時,答案會每四個一迴圈,但是就沒有繼續往下想,其實想下去會想...

NOIP提高組模擬 Value

相信大家一看到這道題就想起最經典的揹包問題,於是毫無疑問就往dp方向想。於是我們設出狀態轉移方程,設f i j k 為我要拿i個物品,已經選了j個,現在第j個我選了k的最大價值,那麼f i j k max,其中l為第j 1次選擇的物品。但很快我們發現,你這樣做是不行的,因為我們還要解決順序問題,選擇...

NOIP提高組模擬 幻象

phantom是一位愛思考的哲 學家。最近phantom得到了森 妖精的真傳。在他練功的時候,每秒他的思緒中都有一定的概率浮現出奇 異的幻象,持續x秒的幻象將產生x 2 的幻象值。phantom練功發自真心,他想知道,在n秒內他期望產生的幻象值是多少。因為持續x秒的幻象將產生x2 的幻象值,所以設乙...