這是一道模擬題。
模擬題:使程式按照題目所敘述的方式進行,模擬整個過程。模擬演算法其實就是給你一堆資料,設計程式將整個模擬過程走一遍,然後得出結果。題目怎麼表述的,程式就怎麼執行。所以模擬題對於演算法設計的要求不高,但是需要選擇合適的資料結構來進行模擬。(參考
模擬題考驗的是我們的**實現能力,簡單的模擬題基本不用想,就是水題,但是比較難的模擬題,需要我們仔細思考,要尋找出一種能夠在**上相對來說比較好實現並且可以解決這道題的資料結構,這考驗的是我們對資料結構的掌握和對題意向**的轉化。(參考
然後我們來看一下這道題目: [noip2003 普及組] 桌球
首先看輸入,注意輸入的多行字串其實是連續的資料,可以把'e'之前的全部存入乙個char s,然後進行按照不同分制進行模擬。
模擬注意兩個條件:1.只有當其中一人的分數大於等於11/21,且兩人的分數差大於等於2,比賽才算結束。 2.新一場比賽剛開始時比分0:0也要輸出。(有兩種情況:"e"或者最後一局比賽剛好完整結束)
#include usingnamespace
std;
const
int len = 2500*30
;char
s[len];
int len = 0
;void solve(int
k) }
//最後不完整的一局,0:0就是屬於這種情況
cout<':'
}int
main()
solve(
11);
cout
21);
return0;
}
自己做的時候還對如何讀取輸入比較困惑,查了一下,總結在這:1.可以使用while((ch = cin.get()) != eof)來讀取單個字元,或者cin>>ch也行。 2.本題中'e'後面的資料可以全部丟棄,不用讀入,讀到'e'就可以停止了。
普及 NOIP 2003 桌球
題目背景 國際乒聯現在主席沙拉拉自從上任以來就立志於推行一系列改革,以推動桌球運動在全球的普及。其中11分制改革引起了很大的爭議,有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位,他退役之後走上了桌球研究工作,意圖弄明白11分制和21分制對選手的不同影響。在開展他的研究之前,他首先需要對...
noip2003普及組 棧
棧 組合計數,卡特蘭數 o n 2 o n 2 o n2 首先任何一種合法的入棧 出棧操作序列都可以得到乙個不同的1 n的排列,因此可以得到的排列總數等於合法入棧 出棧操作序列的個數。該問題等價於求第n nn項cat alan catalan catala n數。在本題中我們使用公式 cnm cn ...
NOIP2023年普及組題解
這是第一題 首先,在做題之前要注意兩個地方 e 不一定出現在文字的末尾,也不一定出現在某行的末尾 比賽必須要領先2個球才能獲勝,11 10的比分是不存在的 好了,廢話不多說,直接上 include include include include include using namespace std...