NOIp 2018 D2T1 旅行 未完成

2022-04-14 07:59:10 字數 925 閱讀 4533

這個題沒有認真讀的話就會寫下以下的dd**

#include#define n 5010

using

namespace

std;

intn,m;

intans[n],actr;

inthead[n],ectr;

bool

vis[n];

struct

edgeedge[n

<<1

];void addedge(int

from,int

to)priority_queue

q;bool

operator

<(edge a,edge b)

intmain()

q.push(edge);

while (actr!=n)

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

cout

<"";

return0;

}

用單調佇列維護乙個邊佇列 然後不斷從裡面抓出來沒有被更新的點 看上去好像很對

實際上換個題它就是對的 但是這不是換的那個題

題中說只有兩種走法  一種是從當前走向乙個沒走過的點 另一種是從走過的回退到走過的

那就意味著 如果你回退了一步 你不能再走到乙個你已經走過的點了

這就是為什麼單調佇列不能用的原因(而且什麼玄學下標也救不了)

正解是基環樹上的dfs找環斷邊(logn) 然後樹上跑一遍dfs(n)

總複雜度為o(n*logn)

但實際上你不用找環也行 因為這題n2也能過(哈哈哈哈哈哈哈哈哈哈哈哈)

直接暴力短邊vans

但是該學的演算法還是要學的 要去做那個資料加強版的

這裡埋個坑 以後回來寫掉

tag:sin_xiii ⑨

NOIP2018提高組D2T1 旅行 題解

在這裡。考慮m n 1 m n 1 m n 1的情況,直接按結點編號大小排序,每次選最小的即可。設s on ison i soni 表示i ii的兒子,那麼時間複雜度為 o i 1n soni log 2s oni begino sum n end o i 1 n so ni log2s oni 所...

NOIP2018 Day2 T1 旅行 題解

乍一看,一道基環樹。說實話考場上有點懵,day2t1直接上基環樹?再一看,好像只是一道無腦的搜尋加剪枝 對於noip資料範圍,o n 2 是可以可過去的 但是對於那個加強版資料,可能需要乙個筆者不會的超級玄學。好吧不扯了,咱們來看看資料範圍。m n 1的情況比較簡單只需一遍跑一邊搜尋,每次找字典序最...

NOIP2018D1T2 貨幣系統

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