原題傳送門
寫的我一口老血
你得先想好
什麼時候會err
\text
err
然後你得知道當前的迴圈到底有沒有用
具體來說是這個迴圈的外面是否有類似
f i 100 1 或 f i n 100
\text
f i 100 1
或f i n 100
的情況那麼需要乙個記錄外面依然有幾個這樣的迴圈的變數can
no
tcannot
cannot
接著你要明確當前是否巢狀n
nn以及已經巢狀了幾層n
nn那麼我又要處理x,y
x,yx,
y的大小關係,以及乙個記錄巢狀層數的變數cyc
lenu
mcyclenum
cyclen
um,記錄答案max
nu
mmaxnum
maxnum
最後你e
ee的時候根據當前是否在無用迴圈裡面(can
no
tcannot
cannot
還不為0)或者當前結束的迴圈到底有沒有巢狀出乙個n來決定是否--cyclenum;--cannot
梳理了一下感覺這個模擬題目就十分清晰有沒有
但是還是千萬記住一點,別再中途bre
ak
break
brea
k,否則你讀不完
code:
#include
#define maxn 10010
using
namespace std;
char s[maxn]
;struct nodea[maxn]
;int used[maxn]
, n;
intmain()
else;}
}if(tot || iferror)
puts
("err");
else
if(maxtime == goal)
puts
("yes");
else
puts
("no");
}return0;
}
luogu 3952 時間複雜度(模擬)
這道題從兩個月前開始做,一直沒做出來,最後今晚決心一定要做出來。於是開始認真的在打草紙上寫思路,最後在ac的那一刻,差點哭了出來!這個自己看吧,noip2017的d1t2 先介紹一下這道題我們用到的每個變數他們的用處 stack記錄變數的迴圈層 vis記錄變數在棧中是否出現過 cmp函式,這個可以用...
luogu P3952 時間複雜度 題解
對於2017 d1 t2 這道題 實實在在是個碼力題,非常考驗耐心。其實大體的思路並不是非常難想出來,但是要注意的小細節比較多。對於每乙個程式,先讀入l和o 並將其中的時間複雜度摳出來。其次整行讀入字串,即所給定的程式。判斷第乙個字元是f or e f i x y 需要把x y拿出來,把i壓進棧 e...
P3952 時間複雜度
看到這種又是字串又是模擬的題目就很傷,很多的地方都考驗細節。看到這種處理迴圈的方式是後進先出,自然想到了用棧來模擬。但是最主要的思路是怎麼算複雜度?其實說白了也簡單 乙個迴圈的複雜度 這個迴圈本身的複雜度 在裡面巢狀的最大的複雜度 這裡的每乙個迴圈變數都是不重複的,如果重複直接判err。那麼我們就可...