




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、NOIP2011 普及組 復(fù)賽1數(shù)字反轉(zhuǎn)(reverse.cpp/c/pas)【問題描述】給定一個(gè)整數(shù),請(qǐng)將該數(shù)各個(gè)位上數(shù)字反轉(zhuǎn)得到一個(gè)新數(shù)。新數(shù)也應(yīng)滿足整數(shù)的常見形式,即除非給定的原數(shù)為零,否則反轉(zhuǎn)后得到的新數(shù)的最高位數(shù)字不應(yīng)為零。(參見樣例2)【輸入】 輸入文件名為reverse.in。 輸入共一行,一個(gè)整數(shù)N。【輸出】 輸出文件名為reverse.out。 輸出共1行,一個(gè)整數(shù),表示反轉(zhuǎn)后的新數(shù)?!据斎胼敵鰳永?】reverse.inreverse.out123321【輸入輸出樣例2】reverse.inreverse.out-380-83【數(shù)據(jù)范圍】 -1,000,000,000N1,
2、000,000,000?!窘忸}】這道題非常簡單,可以讀字符串處理,也可以讀數(shù)字來處理,只不過要注意符號(hào)問題(以及-0,但測試數(shù)據(jù)沒出)?!痉ㄒ弧孔址幚鞻ar i,l,k:integer;s:string;p:boolean;begin assign(input, reverse.in); reset(input); assign(output, reverse.out); rewrite(output); readln(s); l:=length(s); k:=1; if s1=- then begin write(-); k:=2; end; p:=true; for i:=l down
3、to k do begin if(p)and(si=0) then continue else begin write(si); p:=false; end; end; close(input); close(output);end.【法二】數(shù)字處理Var f:integer;n,ans:longint;begin assign(input, reverse.in); reset(input); assign(output, reverse.out); rewrite(output); readln(n); if n0 then begin f:=-1; n:=-n; end else f:=
4、1; ans:=0; while n0 do begin ans:=ans*10+n mod 10; n:=n div 10; end; ans:=ans*f; writeln(ans); close(input); close(output);end.2.統(tǒng)計(jì)單詞數(shù)(stat.pas/c/cpp)【問題描述】一般的文本編輯器都有查找單詞的功能,該功能可以快速定位特定單詞在文章中的位置,有的還能統(tǒng)計(jì)出特定單詞在文章中出現(xiàn)的次數(shù)?,F(xiàn)在,請(qǐng)你編程實(shí)現(xiàn)這一功能,具體要求是:給定一個(gè)單詞,請(qǐng)你輸出它在給定的文章中出現(xiàn)的次數(shù)和第一次出現(xiàn)的位置。注意:匹配單詞時(shí),不區(qū)分大小寫,但要求完全匹配,即給定單詞必
5、須與文章中的某一獨(dú)立單詞在不區(qū)分大小寫的情況下完全相同(參見樣例1),如果給定單詞僅是文章中某一單詞的一部分則不算匹配(參見樣例2)【輸入】輸入文件名為 stat.in,2 行。第 1 行為一個(gè)字符串,其中只含字母,表示給定單詞;第 2 行為一個(gè)字符串,其中只可能包含字母和空格,表示給定的文章?!据敵觥枯敵鑫募麨?stat.out。只有一行,如果在文章中找到給定單詞則輸出兩個(gè)整數(shù),兩個(gè)整數(shù)之間用一個(gè)空格隔開,分別是單詞在文章中出現(xiàn)的次數(shù)和第一次出現(xiàn)的位置(即在文章中第一次出現(xiàn)時(shí),單詞首字母在文章中的位置,位置從0 開始);如果單詞在文章中沒有出現(xiàn),則直接輸出一個(gè)整數(shù)-1?!据斎胼敵鰳永?】s
6、tat.instat.outToto be or not to be is a question2 0【輸入輸出樣例1解釋】輸出結(jié)果表示給定的單詞 To 在文章中出現(xiàn)兩次,第一次出現(xiàn)的位置為0?!据斎胼敵鰳永?】stat.instat.outtoDid the Ottoman Empire lose its power at that time-1【輸入輸出樣例2解釋】表示給定的單詞 to 在文章中沒有出現(xiàn),輸出整數(shù)-1。【數(shù)據(jù)范圍】1單詞長度10。1文章長度1,000,000?!窘忸}】這道題也不是很難,program stat;var I,n,p:longint;s,s1:string;c:
7、char;begin assign(input,stat.in); reset(input); assign(output,stat.out); rewrite(output); readln(s);s:=upcase(s); / 函數(shù)upcase()參數(shù)可為char,也可為stringi:=-1; /i統(tǒng)計(jì)讀入的字符位置,首個(gè)字符出現(xiàn)的位置是0s1:=; /s1累加讀入的字符n:=0; /n統(tǒng)計(jì)出現(xiàn)次數(shù)p:=-1; /p標(biāo)記第一次出現(xiàn)的位置repeat read(c); c:=upcase(c); /統(tǒng)一大小寫 i:=i+1; if c= then /遇到空格,匹配是否相同 begin if
8、 s=s1 then begin n:=n+1; if p=-1 then /p標(biāo)記第一次出現(xiàn)的位置,如果p是第一次更改,記錄位置 p:=i-length(s); end; s1:=; end else s1:=s1+c; /不是空格,繼續(xù)疊加until eoln(input);if s1=s then /處理最后一個(gè)單詞是否相同的情況 begin n:=n+1; if p=-1 then p:=i-length(s)+1; /最后沒有空格 end;if n=0 then writeln(-1)else writeln(n, ,p); close(input);close(output);en
9、d.3. 瑞士輪(swiss.cpp/c/pas)【背景】在雙人對(duì)決的競技性比賽,如乒乓球、羽毛球、國際象棋中,最常見的賽制是淘汰賽和循環(huán)賽。前者的特點(diǎn)是比賽場數(shù)少,每場都緊張刺激,但偶然性較高。后者的特點(diǎn)是較為公平,偶然性較低,但比賽過程往往十分冗長。本題中介紹的瑞士輪賽制,因最早使用于 1895 年在瑞士舉辦的國際象棋比賽而得名。它可以看作是淘汰賽與循環(huán)賽的折衷,既保證了比賽的穩(wěn)定性,又能使賽程不至于過長?!締栴}描述】2*N 名編號(hào)為12N 的選手共進(jìn)行R 輪比賽。每輪比賽開始前,以及所有比賽結(jié)束后,都會(huì)按照總分從高到低對(duì)選手進(jìn)行一次排名。選手的總分為第一輪開始前的初始分?jǐn)?shù)加上已參加過的所
10、有比賽的得分和。總分相同的,約定編號(hào)較小的選手排名靠前。每輪比賽的對(duì)陣安排與該輪比賽開始前的排名有關(guān):第 1 名和第2 名、第3 名和第4名、第2K1 名和第2K 名、 、第 2N1 名和第2N 名,各進(jìn)行一場比賽。每場比賽勝者得1 分,負(fù)者得0 分。也就是說除了首輪以外,其它輪比賽的安排均不能事先確定,而是要取決于選手在之前比賽中的表現(xiàn)。現(xiàn)給定每個(gè)選手的初始分?jǐn)?shù)及其實(shí)力值,試計(jì)算在 R 輪比賽過后,排名第Q 的選手編號(hào)是多少。我們假設(shè)選手的實(shí)力值兩兩不同,且每場比賽中實(shí)力值較高的總能獲勝。【輸入】輸入文件名為 swiss.in。輸入的第一行是三個(gè)正整數(shù) N、R、Q,每兩個(gè)數(shù)之間用一個(gè)空格隔開
11、,表示有2*N 名選手、R 輪比賽,以及我們關(guān)心的名次Q。第二行是 2*N 個(gè)非負(fù)整數(shù)s1, s2, , s2N,每兩個(gè)數(shù)之間用一個(gè)空格隔開,其中si 表示編號(hào)為i 的選手的初始分?jǐn)?shù)。第三行是 2*N 個(gè)正整數(shù)w1, w2, , w2N,每兩個(gè)數(shù)之間用一個(gè)空格隔開,其中wi 表示編號(hào)為i 的選手的實(shí)力值。【輸出】輸出文件名為 swiss.out。輸出只有一行,包含一個(gè)整數(shù),即 R 輪比賽結(jié)束后,排名第Q 的選手的編號(hào)?!据斎胼敵鰳永縮wiss.inswiss.out2 4 27 6 6 710 5 20 151【輸入輸出樣例說明】本輪對(duì)陣本輪結(jié)束后的得分選手編號(hào)/初始/7667第1輪 767
12、8第2輪 7689第3 輪 8699第4 輪 96109【數(shù)據(jù)范圍】 對(duì)于 30%的數(shù)據(jù),1N100;對(duì)于 50%的數(shù)據(jù),1N10,000;對(duì)于 100%的數(shù)據(jù),1N100,000,1R50,1Q2N,0s1, s2, , s2N ,1w1,w2, , w2N ?!窘忸}】題目雖然長,但理解題意后就發(fā)現(xiàn)解題的瓶頸在于排序。如果每一輪比賽的結(jié)果都進(jìn)行快速排序,時(shí)間復(fù)雜度為O(Rlongn),但事實(shí)證明這樣只能拿60分。如何AC,這需要一個(gè)巧算法:分析得知,快速排序?qū)嶋H上進(jìn)行了許多無用的工作:如果兩個(gè)人在第i輪都贏了,那么第i輪后的先后關(guān)系與第i-1輪是一樣的;反之,如果兩人都輸了,他們的先后關(guān)系也
13、不會(huì)變。所以,我們有一個(gè)新算法:一開始做一趟快速排序,然后對(duì)于每一輪,將此輪的n個(gè)贏者(他們的先后關(guān)系和上一輪不變)和n個(gè)輸者(他們的先后關(guān)系和上一輪也不變分開,然后就是歸并,于是時(shí)間復(fù)雜度O(Rn)(實(shí)踐證明,如果單純的排序r次,必然結(jié)果是超時(shí)。事實(shí)上只需一次真正意義上的排序以后,在以后的比賽中,按原順序分成兩組,獲勝組和失敗組,這兩組依然是有序的,再把這兩組歸并成一組,就可以了??倳r(shí)間復(fù)雜度O(N*R) )program swiss;var a,b,v:array1.200000of longint; c,d:array1.100000,1.2of longint; n,r,q,i,j:l
14、ongint;procedure qsort(l,r:longint);var i,j,mid1,mid2,t:longint;begin i:=l;j:=r; mid1:=a(l+r)div 2; mid2:=v(l+r)div 2; repeat /按分?jǐn)?shù)從高到低排序,分?jǐn)?shù)相同的,編號(hào)較小的選手排名靠前 while (aimid1) or (ai=mid1) and (vimid2) do inc(i); while (ajmid2) do dec(j); if ij; if ir then qsort(i,r); if ldl2,1)or (cl1,1=dl2,1)and(cl1,2n)
15、or(l2n); while l1=n do begin i:=i+1; ai:=cl1,1; vi:=cl1,2; l1:=l1+1; end; while l2bv2*j then begin inc(a2*j-1); cj,1:=a2*j-1; /數(shù)組cj,1保存嬴方的總分;數(shù)組cj,2保存嬴方的號(hào)碼; cj,2:=v2*j-1; dj,1:=a2*j; /數(shù)組dj,1保存輸方的總分;數(shù)組dj,2保存輸方的號(hào)碼; dj,2:=v2*j; end else begin inc(a2*j); cj,1:=a2*j; cj,2:=v2*j; dj,1:=a2*j-1; dj,2:=v2*j-1
16、; end; mergesort; end; writeln(vq); close(input);close(output);end.4. 表達(dá)式的值(exp.cpp/c/pas)【問題描述】對(duì)于 1 位二進(jìn)制變量定義兩種運(yùn)算:運(yùn)算符運(yùn)算規(guī)則00=001=110=111=10 0=00 1=01 0=01 1=1運(yùn)算的優(yōu)先級(jí)是:1. 先計(jì)算括號(hào)內(nèi)的,再計(jì)算括號(hào)外的。2. “”運(yùn)算優(yōu)先于“”運(yùn)算,即計(jì)算表達(dá)式時(shí),先計(jì)算運(yùn)算,再計(jì)算運(yùn)算。例如:計(jì)算表達(dá)式AB C 時(shí),先計(jì)算B C,其結(jié)果再與A 做運(yùn)算。現(xiàn)給定一個(gè)未完成的表達(dá)式,例如_+(_*_),請(qǐng)你在橫線處填入數(shù)字0 或者1,請(qǐng)問有多少種填法可
17、以使得表達(dá)式的值為0?!据斎搿枯斎胛募麨?exp.in,共2 行。第 1 行為一個(gè)整數(shù)L,表示給定的表達(dá)式中除去橫線外的運(yùn)算符和括號(hào)的個(gè)數(shù)。第 2 行為一個(gè)字符串包含L 個(gè)字符,其中只包含(、)、+、*這4 種字符,其中(、)是左右括號(hào),+、*分別表示前面定義的運(yùn)算符“”和“”。這行字符按順序給出了給定表達(dá)式中除去變量外的運(yùn)算符和括號(hào)?!据敵觥枯敵鑫募?exp.out 共1 行。包含一個(gè)整數(shù),即所有的方案數(shù)。注意:這個(gè)數(shù)可能會(huì)很大,請(qǐng)輸出方案數(shù)對(duì)10007 取模后的結(jié)果?!据斎胼敵鰳永?】exp.inexp.out4+(*)3【輸入輸出樣例說明】 給定的表達(dá)式包括橫線字符之后為:_+(_*_
18、)在橫線位置填入(0、0、0)、(0、1、0)、(0、0、1)時(shí),表達(dá)式的值均為0,所以共有3種填法?!緮?shù)據(jù)范圍】 對(duì)于 20%的數(shù)據(jù)有0L10。對(duì)于 50%的數(shù)據(jù)有0L1,000。對(duì)于 70%的數(shù)據(jù)有0L10,000。對(duì)于 100%的數(shù)據(jù)有0L100,000。對(duì)于 50%的數(shù)據(jù)輸入表達(dá)式中不含括號(hào)?!窘忸}】算法類似于表達(dá)式計(jì)算,一個(gè)符號(hào)棧,兩個(gè)數(shù)據(jù)棧。記f(s,0)表示表達(dá)式s為0的方案數(shù),f(s,1)表示表達(dá)式s為1的方案數(shù)。f(a+b,0) = f(a,0)*f(b,0) f(a+b,1) = f(a,0)*f(b,0)+f(a,0)*f(b,1)+f(a,1)*f(b,0) f(a*b
19、,0)=f(a,0)*f(b,0) + f(a,1)*f(b,0) + f(a,0)*f(b,1) f(a*b,1) = f(a,1) * f(b,1)program exp;const maxn= 100010; op:array1.4 of char = (,+,*,); flag:array1.4,1.4 of char = ( ( (,=), + (,), * (,), ) (,) ); /符號(hào)優(yōu)先級(jí)表var stack_op:array1.maxn of char; stack_data0, stack_data1:array1.maxn of longint; n,top_op,
20、top_data, i, len:longint; a0, a1, b0, b1, t0, t1:longint; s:ansistring;ch,now:char;procedure push_op(ch:char); /運(yùn)算符壓棧 begin inc(top_op); stack_optop_op:=ch; end;function pop_op:char; /運(yùn)算符出棧 begin pop_op:= stack_optop_op; dec(top_op); end;function gettop:char; /取棧頂符號(hào) begin gettop:=stack_optop_op; end
21、;procedure push_data(a0,a1:longint); /數(shù)據(jù)壓棧 begin inc(top_data); stack_data0top_data:=a0; stack_data1top_data:=a1; end;procedure pop_data(var a0,a1:longint); /數(shù)據(jù)出棧 begin a0:=stack_data0top_data; a1:=stack_data1top_data; dec(top_data); end;function find(ch:char):integer; /讀入符號(hào)var i:longint;begin for i:= 1 to 4 do if opi=ch then exit(i); end;begin assign(input,exp.in); reset(input); assign(output,exp.out); rewrite(output); top_op:=0; top_d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中語文8蘭亭集序習(xí)題含解析新人教版必修2
- 2024-2025學(xué)年高中英語Module1SmallTalkSectionⅢ知能演練輕松闖關(guān)含解析外研版選修6
- 2024-2025學(xué)年高中歷史專題7近代西方民主政治的確立與發(fā)展2美國1787年憲法學(xué)案人民版必修1
- 2024-2025學(xué)年高中歷史第三單元從人文精神之源到科學(xué)理性時(shí)代第15課近代科學(xué)技術(shù)革命課時(shí)作業(yè)含解析岳麓版必修3
- 2024-2025學(xué)年高中政治第四單元發(fā)展社會(huì)主義市抄濟(jì)課題能力提升九含解析新人教版必修1
- 湖南省2024年普通高中學(xué)業(yè)水平選擇性考試物理試題含答案
- 2025年連鑄設(shè)備項(xiàng)目可行性研究報(bào)告
- 2024年建筑陶瓷制品項(xiàng)目策劃方案報(bào)告
- 2025年中國電動(dòng)手術(shù)臺(tái)行業(yè)市場調(diào)查研究及投資前景預(yù)測報(bào)告
- 2025年汽車軟飾件行業(yè)深度研究分析報(bào)告
- 2021年山東省威海市中考語文真題(解析版)
- 主動(dòng)脈夾層的護(hù)理-ppt課件
- 高新技術(shù)企業(yè)認(rèn)定申請(qǐng)書樣例與說明
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter6 Tree
- 高壓氧科工作總結(jié)高壓氧科個(gè)人年終總結(jié).doc
- 《政治學(xué)概論》教學(xué)大綱
- 橋梁缺陷與預(yù)防
- 食品生物化學(xué)習(xí)題謝達(dá)平(動(dòng)態(tài))
- 保安員工入職登記表
- 睿達(dá)RDCAM激光雕刻切割軟件V5.0操作說明書
- 機(jī)械設(shè)計(jì)基礎(chǔ)平面連桿機(jī)構(gòu)課件
評(píng)論
0/150
提交評(píng)論