NOIP2018 Day2 T1 旅行 題解

2021-09-02 01:32:16 字數 1554 閱讀 2277

乍一看,一道基環樹。

說實話考場上有點懵,day2t1直接上基環樹?

再一看,好像只是一道無腦的搜尋加剪枝

對於noip資料範圍,o(n^2)是可以可過去的

但是對於那個加強版資料,可能需要乙個筆者不會的超級玄學。

好吧不扯了,咱們來看看資料範圍。

m=n-1的情況比較簡單只需一遍跑一邊搜尋,每次找字典序最小的往下搜就行了。

而對於m=n的情況,就是神(wei)奇(suo)的基環樹了。

對於基環樹的簡單定義,可以說是一顆有且僅有乙個簡單環的樹,再通俗一點,就是乙個n個點n條邊的連通圖。

但是,其實用不著基環樹的知識

終極奧秘,暴力

沒錯,只要暴力刪除任意一條邊就行了,再跑搜尋。

因為總有一條邊是用不到的。

最後加乙個剪枝,就是如果當前搜到的字典序肯定大於搜到過的答案了,那就return掉

直接上**

#include

using

namespace std;

int n,m;

vector<

int> edge[

10010];

int d1,d2,d3,d4;

vector<

int> ans1,ans2;

bool ha[

5010][

5010];

int cnt;

bool h,k;

template

<

typename t>

inline

void

read

(t &x)

inline

void

addedge

(int u,

int v)

inline

bool

chck

(int u,

int v)

void

dfs(

int u)

if(ans1.

size()

>

0&&ans2[ans2.

size()

-1]size()

-1])k=1;

ha[u]

[cnt]=1

;for

(int i=

0;i.size()

;i++)}

inline

void

print()

intmain()

for(

int i=

1;i<=n;i++

)sort

(edge[i]

.begin()

,edge[i]

.end()

);if(m==n-1)

for(

int i=

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

print()

;return0;

}

NOIP2018Day1T1 鋪設道路

春春是一名道路工程師,負責鋪設一條長度為 n 的道路。鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區域,一開始,第 i 塊區域下陷的深度為 d i 春春每天可以選擇一段連續區間 l,r 填充這段區間中的每塊區域,讓其下陷深度減少 1 在選擇區間時,需要保證,區間內的每塊區...

NOIP2018D1T2 貨幣系統

題面 這道題我是親自在考場上考過的 先說題解吧 乙個貨幣系統中 x xx是沒用的,當且僅當他能被系統中別的貨幣表示 我們拿rmb rmbrm b來舉個例子 發現所有的錢都能被一分錢表示出來 所以只留乙個一分錢的就好了 啪咳咳 不鬧了 題面可以簡述為 給你乙個貨幣系統a aa 讓我們可以給他簡化 使得...

CTSC2018 Day2T1 Juice混合果汁

題解 在考場上a掉的題。把美味度排個序,然後按照 p為權值建立主席樹,把每個果汁按照拍好的順序新增進去。主席樹上維護總公升數cnt以及總 sum。對於每個詢問,我們二分乙個美味值,check的時候去主席樹上查詢大於等於這個美味值的果汁中購買l公升的 即可。1 include2 include3 de...