堪稱史上最噁心的模擬題!花了我幾乎一天時間才調出來。。。
思路沒啥好說的,開棧模擬即可,細節說一說。
1、每次處理乙個新的程式時,將所有該初始化的都初始化,這點估計都能想到。
2、關於讀入語句,可以一次讀一行,也可以分開讀,建議分成三個變數讀,我用的一次讀一行,坑死了!不過趁機學了一下c++關於讀入行的知識,cin.getline(char*,int)用來操作字元陣列,需要指定讀入字串大小,getline(istream,string)用來操作字串,從指定流中讀取一行。非常坑的一點,cin讀字串的時候,並不會讀換行符,如果在此之後緊接著用getline讀了一行,會什麼也讀不到,需要手動用getchar()把換行符殺掉。
3、如果遇到語法錯誤,別急著跳出,還要把剩下的讀完。這個坑了我好久,最後把讀入的全輸出才發現。。。
剩下的自己看**吧,估計也沒耐心看,還是自己寫慢慢調最靠譜。。。
1 #include 2 #include 3 #include 4 #includeac**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 }
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 ...