重慶市NOIP模擬賽 獨立集

2022-09-14 19:06:10 字數 1420 閱讀 5262

知道做法竟然可以 \(\tt \color\) 3發,真是沒誰了。

題面遠長於題解系列。

有一天,乙個名叫順旺基的程式設計師從石頭裡誕生了。又有一天,他學會了氣泡排序和獨立集。在乙個圖里,獨立集就是乙個點集,滿足任意兩個點之間沒有邊。於是他就想把這兩個東西結合在一起。

眾所周知,獨立集是需要乙個圖的。那麼順旺基同學創造了乙個演算法,從氣泡排序中產生乙個無向圖。

這個演算法不標準的偽**如下:

//輸入:點數n,1到n的全排列a 

//輸出:乙個點數為n的無向圖g

void bubblesortgraph(n,a)

輸出圖g。

} //結束。

那麼我們要算出這個無向圖 g 最大獨立集的大小。但是事情不止於此。順旺基同學有時候心情會不爽,這個時候他就會要求你再回答多乙個問題:最大獨立集可能不是唯一的,但有些點是一定要選的,問哪些點一定會在最大獨立集裡。今天恰好他不爽,被他問到的同學就求助於你了。

a是全排列。

\(1\le n\le 10^5.\)

資料太大,我們不能把圖建出來,所以直接考慮哪些點之間沒有邊。

直接可以得到結論是上公升子串行,所以第一問的答案就是最長上公升子串行的長度。

第二問直接正反各跑一邊即可。

時間複雜度 \(o(n\log_2n)\)。

精簡

//12252024832524

#include #define tt templateusing namespace std;

typedef long long ll;

const int maxn = 100005;

int n,ans;

int a[maxn],pre[maxn],suf[maxn],dp[maxn],vis[maxn];

ll read()

while(c >= '0' && c <= '9')

return x * f;

}tt void put1(t x)

tt void put(t x,char c = -1)

tt t max(t x,t y)

tt t min(t x,t y)

tt t abs(t x)

int main()

ans = cnt; cnt = 0;

for(int i = n;i >= 1;-- i)

put(ans,'\n');

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

if(pre[i]+suf[i] > ans) ++vis[pre[i]];

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

if(pre[i]+suf[i] > ans && vis[pre[i]] <= 1) put(i,' ');

return 0;

}

重慶市NOIP模擬賽 業務

mr h 謀得乙份兼職 貨車司機,從此以後他將會開著貨車穿行在 c 國的各大城市之間。c 國中有 n 座城市 編號為 1 n 並且有 m 條雙向公路,每條公路連線兩座不同的城市。貨車 從任意一座城市出發都可以抵達任意另一座城市。在每條公路上,都有乙個收費站,通過的車輛需要 交納一定過路費。可能有多條...

總結 20151017重慶市NOIP模擬賽

這場比賽有點難,考完了之後感覺要爆零了 o 這次比賽還算不錯,發揮出了正常水平 木有犯sb錯誤 主要是因為第一題亂yy寫了乙個不知道比標程慢了無數倍的 然後a掉了。藐似第一題比較關鍵,之後的比賽不能在第一題上掉以輕心。預設第一題最簡單o o 這次在比賽的前幾分鐘看了一下題目,在做的過程中先跳過了第二...

noip模擬賽 密碼

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