NOIP2017 時間複雜度

2022-07-16 19:18:13 字數 1572 閱讀 2361

堪稱史上最噁心的模擬題!花了我幾乎一天時間才調出來。。。

思路沒啥好說的,開棧模擬即可,細節說一說。

1、每次處理乙個新的程式時,將所有該初始化的都初始化,這點估計都能想到。

2、關於讀入語句,可以一次讀一行,也可以分開讀,建議分成三個變數讀,我用的一次讀一行,坑死了!不過趁機學了一下c++關於讀入行的知識,cin.getline(char*,int)用來操作字元陣列,需要指定讀入字串大小,getline(istream,string)用來操作字串,從指定流中讀取一行。非常坑的一點,cin讀字串的時候,並不會讀換行符,如果在此之後緊接著用getline讀了一行,會什麼也讀不到,需要手動用getchar()把換行符殺掉。

3、如果遇到語法錯誤,別急著跳出,還要把剩下的讀完。這個坑了我好久,最後把讀入的全輸出才發現。。。

剩下的自己看**吧,估計也沒耐心看,還是自己寫慢慢調最靠譜。。。

1 #include 2 #include 3 #include 4 #include 

5 #include 6

7using

namespace

std;89

int vis[130

];10

11 stacks, s2, s3;

1213

intmain()

33else

else

if (s3.top() ==s.top()) s3.pop();

38 vis[(int)s.top()] = 0;39

s.pop();40}

41 } else

47else

51int a = 0, b = 0, p = 4;52

if (com[p] == '

n') a = 10005, ++p;

53else

while (com[p] != '')

54 a = a * 10 + com[p++] - '0'

;55 ++p;

56if (com[p] == '

n') b = 10005;57

else

while

(com[p])

58 b = b * 10 + com[p++] - '0'

;59if (a >b) s3.push(x);

60if (a < b && a < 10005 && b < 10005 &&s3.empty())

61s2.push(x);

62if (a < b && b == 10005 && s3.empty()) ++now;

63 ans =max(ans, now);64}

65}66if (!flag || !s.empty())

70if (cpx[2] == '

1' && cpx[3] == ')'

) else80}

81return0;

82 }

ac**

NOIP2017 時間複雜度

最近做的最簡單的一道模擬題orz 終於把noip2017的都搞完了。這道理有幾個需要注意的小細節 1.注意 f i n n的情況,相當與常數。2.在不迴圈的部分也要記得判斷是否重複變數 3.兩個常數的時候記得比大小 其他也就沒啥了。考noip2017的時候棧是什麼都不知道,只知道zz模擬,也不知道怎...

NOIP2017 時間複雜度

傳送門 這道題我去年做到 最後還是爆零了,現在我還是特別慢才寫完 唯一不同就是現在思路比較清晰,但是我的做法比較複雜,很長。我們要處理以下事情 1.讀入程式行數,得到該程式時間複雜度。這個很簡單,我的方法是寫乙個函式判斷一下,然後返回當前時間,如果是常數級就是0.2.讀入程式,判斷是否合法。這一步判...

NOIP 2017 時間複雜度

題目鏈結 去年考試這道題貌似20分 今天又寫,怒幹1個半小時,一次ac 重點是靜下心來,理清思路,知道要幹什麼 然後慢慢地查錯 之後自己造一些比較難的資料來測 這種細節巨多的題就要靜下來,就好了 include define rep i,a,b for register int i a i b i ...