2019暑假五考Ronald(神仙結論題)

2021-09-25 09:35:38 字數 2919 閱讀 9300

題目描述

乙個國家有n個城市,城市之間連線著雙向航空線路。一位瘋狂的航空公司總裁ronald krump經常改變航班時刻表。更準確地說,他每天都做以下事情:

●選擇其中乙個城市

●如果該城市和某個其他城市之間之前沒有航線那麼在這兩個城市之間建立一條航線,如果該城市和某個其他城市之間之前已有航線那麼取消這條航線

例如,如果從城市5有航線通往城市1和2,但沒有航線通往城市3和4,那麼在krump選擇城市5並進行操作後,將有從城市5通往城市3和4的航線,但沒有從城市5通往城市1和2的航線。

這個國家的公民在想,是否有一天航線圖會變為完全圖。換言之,當天任意兩個不同的城市之間存在一條航線(直達)。寫乙個程式,根據當前的航線圖,確定是否有可能有某一天出現這種情況,通過krump的操作。

輸入格式

第一行輸入包含乙個整數n

nn。表示城市的數量。城市從1到n編號。 第二行輸入包含乙個整數m

mm。表示當前航線的數量。 接下來m行每行包含兩個不同的整數,表示一條航線連線的兩個城市的編號。

輸出格式

如果有一天航線圖會變為完全圖,那麼輸出「da」。否則輸出「ne」。輸出均不含引號。

範圍

2 ≤n

≤1000,0

≤m≤n

∗(n−

1)

22≤n≤1000,0≤m≤\frac

2≤n≤10

00,0

≤m≤2

n∗(n

−1)​

樣例

樣例輸入120

樣例輸出1

da樣例輸入232

1223

樣例輸出2

ne樣例輸入342

1324

樣例輸出3

da

思路

考試時第一眼看感覺是強聯通分量(好像叫點雙聯通分量,但寫著好像是強聯通分量),如果有偶數個強聯通分量,好像都行,因為2個可以,4個的沒推出來;奇數個分量就不行,但如果它本身就是乙個完全圖,好像又錯了,所以後面打了兩個表,加上強聯通的**,對了五個點(一共8個點,還是繫結資料),真水啊

開始正解:

如果這個圖本身就是完全圖或者一條邊都沒有,那麼肯定可以

如果這個圖只有兩個完全圖g1,

g2

g_1, g_2

g1​,g2

​,想一想,g

2g_2

g2​中的每個點先與g

2g_2

g2​中剩下的點斷開,再融入g

1g_1

g1​中,此時g

1g_1

g1​肯定還是乙個完全圖(新點與g

1g_1

g1​原圖中的每個點都建立聯絡),那麼迴圈下去,最後肯定只剩乙個完全圖了

如果這個圖有乙個完全圖g

1g_1

g1​,乙個非完全圖g

2g_2

g2​,若把g

1g_1

g1​融入g

2g_2

g2​,按照上面的方法,最後剩下的肯定是乙個不完全圖;若把g

2g_2

g2​融入g

1g_1

g1​,那麼g

2g_2

g2​中至少都會有乙個點在融入g

1g_1

g1​時與g

2g_2

g2​

1g_1

g1​,也不屬於g

2g_2

g2​),所以最後也不是乙個完全圖

如果這個圖有兩個非完全圖g1,

g2

g_1,g_2

g1​,g2

​,你想,乙個完全圖和乙個非完全圖都不可能,兩個非完全圖還可能嗎?

所以總結一下

至於判斷完全圖,自己找規律,很多方法

code

#include

#include

#include

#include

#include

#include

using

namespace std;

#define m 1005

#define ll long long

vector<

int>g[m]

;vector<

int>c[m]

;stack<

int>ss;

int com_g_sum, uncom_g_sum;

int n, m, u, v, times, ans;

int low[m]

, dfn[m]

, de[m]

;bool vis[m]

, flag;

inline

void

dfs(

int x)

else

if( vis[son]

) low[x]

=min

(low[x]

, dfn[son]);

}if( low[x]

== dfn[x])}

}int

main()

for(

int i =

1; i <= n; i ++

)for

(int i =

1; i <= ans; i ++)}

if( flag ==0)

com_g_sum++;}

if( uncom_g_sum || com_g_sum >2)

printf

("ne\n");

else

printf

("da\n");

return0;

}

2019暑假四考Kas(dp)

題目描述 kile和pogi在街上撿到了n nn張鈔票。在確定無法找到失主之後,兩人決定將鈔票平分。他們想要得到相同數量的錢,所以他們將這些鈔票盡可能分成價值相等的兩份。但是當鈔票無法平分的時候會剩下一些。由於他們不能將剩餘的鈔票留在街上,他們決定去附近的賭場並將所有剩下的鈔票都押上,希望最終得到兩...

2019暑假集訓

7.8 題解a.類似於保護古蹟的亂搞 b.可持久化線段樹維護塊與塊的連邊 暴力匹配 c.burnside引理好題 補不來.jpg ctsc2014 隨機數 這裡 感覺是一道比較好的題 常見套路又忘了系列 n個點無向連通圖計數 考慮1號點所在聯通塊大小 減掉 然後得到乙個柿子可以分治fft 7.9題解...

2019暑假學習計畫

前言 既然暑假沒有作業,那幹嘛呢?當然是刷資訊學了。由於之前利用自我剖析總結出了許多小問題,很多知識點沒有掌握。那麼現在我就列個學習清單以免忘記。關於dp 學習各種優化 1d1d 斜率優化 插頭dp 關於搜尋 a ida 退火關於圖論 網路流 複習 點分治啟發式合併 關於資料結構 分塊 莫隊 lct...