




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第十九屆全國(guó)信息學(xué)奧林匹克聯(lián)賽(noip2013)解題報(bào)告(普及組)寧波市鎮(zhèn)海蛟川書(shū)院 郁庭第一題:記數(shù)(count)【分析】直接用最樸素的模擬來(lái)做,時(shí)間復(fù)雜度小于(數(shù)的個(gè)數(shù)*每個(gè)數(shù)位數(shù)), 1千萬(wàn)以內(nèi)的運(yùn)算次數(shù)是肯定不會(huì)超時(shí)的。代碼:var n,x,i,temp,j,count:longint;begin assign(input,'count.in');reset(input); assign(output,'count.out');rewrite(output); readln(n,x); for i:=1 to n do begin temp:=i; w
2、hile temp>0 do begin j:=temp mod 10; temp:=temp div 10; if j=x then inc(count);end;end;writeln(count);close(input);close(output);end.【再分析】這樣虐題目是會(huì)跌人品的,這段時(shí)間是非??简?yàn)人品的時(shí)候(當(dāng)時(shí)數(shù)據(jù)、成績(jī)未公布,提心吊膽啊),于是就產(chǎn)生了下面的程序(時(shí)間復(fù)雜度就是數(shù)的位數(shù)),用幾個(gè)手算來(lái)說(shuō)明問(wèn)題:輸入:10134 1 (n=10134 x=1便于后面的描述)輸出:4204規(guī)律總結(jié)(從個(gè)位到高位用a1.ai來(lái)表示):在第i位上固定x,把原數(shù)分成兩段,然
3、后考慮ai和x大小的關(guān)系,對(duì)應(yīng)了上面013的分析,不難發(fā)現(xiàn):ai>x時(shí),種數(shù)=(左段值+1)*(右段位數(shù))ai=x時(shí),種數(shù)=(左段值)*(右段位數(shù))+(右段值+1)ai<x時(shí),種數(shù)=(左段值)*(右段位數(shù))別高興太早,如果x=0時(shí),規(guī)律又有點(diǎn)不一樣,最高位不需要考慮、中左段值減1就行了,附上代碼varn,x,m,i,count,left,right,ans:longint;a,b:array0.7 of longint;begin assign(input,'count.in');reset(input); assign(output,'count.out&
4、#39;);rewrite(output); readln(m,x); b0:=1;n:=m;while m>0 do begininc(count); bcount:=bcount-1*10;acount:=m mod 10;m:=m div 10;end; bcount+1:=bcount*10; if x=0 then dec(count);for i:=1 to count do beginif ai<x then beginleft:=n div bi;right:=bi-1;inc(ans,left*right);endelse if ai=x then begin l
5、eft:=n div bi; if x=0 then dec(left); right:=bi-1;inc(ans,left*right+(n mod bi-1)+1);endelse beginleft:=n div bi+1; if x=0 then dec(left); right:=bi-1;inc(ans,left*right);end;end; if (x=0) and (n<10) then writeln(0) else if x=0 then writeln(ans) else writeln(ans); close(input);close(output);end.第
6、二題:表達(dá)式求值(expr)【分析】可以說(shuō)方法很多,又可以說(shuō)方法很少的題目,萬(wàn)變不離其中的模擬,但實(shí)現(xiàn)方法人各有異,我寫(xiě)得很樸素,一邊讀入一邊操作,省得ansistring操作,利用一個(gè)棧存放乘法加法,各種地方mod反正都不影響結(jié)果,于是代碼出爐了,寫(xiě)得比較快,沒(méi)有美感,請(qǐng)見(jiàn)諒。var i,j,k:longint; flag:boolean; c:char; tot,temp:qword; a:array0.100000 of longint;procedure add;begin inc(i);ai:=temp;temp:=0;end;procedure jisuan;beginif fla
7、g then begin ai-1:=(ai-1*ai) mod 10000;dec(i); end;end;begin assign(input,'expr.in');reset(input); assign(output,'expr.out');rewrite(output); while not eoln do beginread(c);case c of '+':begin add; jisuan; flag:=false; end; '*': begin add; jisuan; flag:=true; end; els
8、e begin val(c,k); temp:=temp*10+k; end end;end; inc(i); ai:=temp;tot:=0;if flag then begin inc(tot,ai*ai-1mod 10000); i:=i-2; end;while i>0 do begin inc(tot,ai); tot:=tot mod 10000; dec(i);end;writeln(tot); close(input);close(output);end.第三題:小朋友的數(shù)字(number)【本段吐槽可以無(wú)視】聯(lián)賽趕上自己評(píng)職稱(chēng),沒(méi)隨隊(duì)過(guò)去,回來(lái)聽(tīng)說(shuō)第三題難懂,趕緊瞄了下
9、題目,孩子們啊,我不是和你們說(shuō)過(guò)的嗎,聯(lián)賽普及組就是考讀題目的啊,讀懂后簡(jiǎn)單有木有啊,本題就是最好的證明,再普通不過(guò)的遞推了,狀態(tài)轉(zhuǎn)移都沒(méi)有?!绢}目簡(jiǎn)述】給你n個(gè)數(shù),讓你求對(duì)應(yīng)的n個(gè)特征值(前面的最大連續(xù)和,o(n)的掃描,滾瓜爛熟了),根據(jù)特征值求分?jǐn)?shù)值(前面的單個(gè)(分?jǐn)?shù)值+特征值)的最大值),題目需要輸出n個(gè)分?jǐn)?shù)值的最大值。【我的思路】o(n)掃描最大連續(xù)和,求出特征值,然后o(n)計(jì)算分?jǐn)?shù)值,同時(shí)用(分?jǐn)?shù)值+特征值)更新max。這個(gè)思路有一個(gè)需要注意的地方,分?jǐn)?shù)值+特征值會(huì)超過(guò)longint、int64(高精度可以解決),這里采用計(jì)算max時(shí)執(zhí)行mod p操作,于是就產(chǎn)生了如下問(wèn)題: 輸
10、入:5 981-409 -401 97 -96 -301特征值:-409 -409 -312 97 97分?jǐn)?shù)值:-409 -818 -818 -721 -624max :-818 不變 -721 -624最終max停留在了-624,但明顯-409才是最大的分?jǐn)?shù)值,這個(gè)問(wèn)題其實(shí)就是max初值兩個(gè)-409惹的禍,必須要在后面所有特征值中判斷有沒(méi)有絕對(duì)值大于409的,否則max需要考慮第一個(gè)分?jǐn)?shù)值,以免出現(xiàn)這樣的錯(cuò)誤。附上代碼:vari,n,p:longint;a:array0.1000000 of longint;f,b:array0.1000000 of int64;max,temp:int64
11、; flag:boolean;begin assign(input,'number.in');reset(input); assign(output,'number.out');rewrite(output); readln(n,p); for i:=1 to n do beginread(ai);end;max:=-maxlongint; for i:=1 to n do begininc(temp,ai);if temp>max then max:=temp;if temp<0 then temp:=0; bi:=max;end; f1:=b1;
12、max:=f1+b1;if b1<0 then flag:=false;for i:=2 to n-1 do begin fi:=max; if bi>0 then begin if not flag and (bi>-b1) then flag:=true; max:=(fi+bi) mod p; end; end; if not flag and (max<f1) then max:=f1; writeln(max); close(input);close(output);end.第四題:車(chē)站分級(jí)(level)【本段吐槽可以無(wú)視】很基礎(chǔ)的拓?fù)渑判虬?,我看完題目首先想
13、了個(gè)貪心,發(fā)現(xiàn)有反例,于是畫(huà)了下圖就知道是用拓?fù)渥隽?,但腦中的思維定式(普及組貌似從來(lái)沒(méi)有過(guò)絕對(duì)的圖論題)讓我糾結(jié)了一下,想想有沒(méi)有其他巧方法,這個(gè)問(wèn)題也留給大家?!痉治雎詭虏邸窟@個(gè)程序沒(méi)什么難點(diǎn),第一遍就過(guò)了樣例,但為什么只有我校念祖一人做對(duì)?難道是拓?fù)鋵?xiě)殘了,沒(méi)有用隊(duì)列存儲(chǔ)?這要問(wèn)幾個(gè)90分的同學(xué)了,應(yīng)該是超時(shí)丟的分吧。【解題思路】畫(huà)個(gè)圖,我手稿找不到了(估計(jì)是評(píng)完職稱(chēng)后隨那一大堆紙進(jìn)了垃圾桶了),不然可以掃描下省得畫(huà)var n,m,i,j,count,k,w,h,t:longint; get:array0.1000 of boolean; hav:array0.1000,0.1000
14、of boolean; jin,b,chu,a:array0.1000 of longint; next:array0.1000,0.1000 of longint; eq:array0.2000 of longint;procedure deal(j:longint);var i,k,te:longint;beginfor i:=1 to j do begin te:=jineqh; for k:=1 to te do begin dec(chunexteqh,k);/斷邊 if chunexteqh,k=0 then begineqt:=nexteqh,k;inc(t);end end;i
15、nc(h);end;end;begin assign(input,'level.in');reset(input); assign(output,'level.out');rewrite(output); readln(n,m);for i:=1 to m do beginread(j);count:=0;fillchar(get,sizeof(get),false);for k:=1 to j do beginread(ak);getak:=true;inc(count);bcount:=ak;end;readln;for k:=b1 to bcount doif not getk thenfor w:=1 to count doif not havk,bw then beginhavk,bw:=true;inc(jink);nextk,jink:=bw; /出去邊的指向inc(chubw); end; end;count:=0;h:=1;t:=1;for k:=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房屋租賃押金及定金綜合服務(wù)合同
- 二零二五年度健康醫(yī)療產(chǎn)業(yè)業(yè)績(jī)提成合同
- 二零二五年度企業(yè)實(shí)習(xí)生勞動(dòng)合同實(shí)習(xí)期薪資及職業(yè)發(fā)展保障計(jì)劃協(xié)議
- 二零二五年度醫(yī)院骨科與骨科醫(yī)療器械研發(fā)中心合作協(xié)議
- 二零二五年度科技園區(qū)房東租賃協(xié)議
- 二零二五年度農(nóng)產(chǎn)品收購(gòu)擔(dān)保合同
- 2025年度晚托班幼兒托管與安全管理規(guī)范協(xié)議
- 2025年度科技創(chuàng)新基金眾籌協(xié)議書(shū)模板
- 二零二五年度綠色環(huán)保型房屋抵押貸款合同規(guī)范
- 二零二五年度腳手架施工安全監(jiān)督與檢查合同
- 西方經(jīng)濟(jì)學(xué)(第二版)完整整套教學(xué)課件
- 《零基礎(chǔ)玩轉(zhuǎn)小紅書(shū):吃透爆款邏輯漲粉、變現(xiàn)不再難》
- 圍術(shù)期下肢深靜脈血栓預(yù)防的術(shù)中護(hù)理
- 《云南瀾滄鉛礦有限公司勐濱煤礦采礦權(quán)價(jià)款退還計(jì)算說(shuō)明》
- GB/T 9113.1-2000平面、突面整體鋼制管法蘭
- GB/T 2423.18-2021環(huán)境試驗(yàn)第2部分:試驗(yàn)方法試驗(yàn)Kb:鹽霧,交變(氯化鈉溶液)
- 2021年湖北師范學(xué)院專(zhuān)升本C語(yǔ)言程序設(shè)計(jì)試卷
- CB/T 3136-1995船體建造精度標(biāo)準(zhǔn)
- 疫苗冰箱溫度記錄表
- 2023年海東地區(qū)互助土族自治縣人民醫(yī)院醫(yī)護(hù)人員招聘筆試模擬試題及答案解析
- 福建省三明市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)
評(píng)論
0/150
提交評(píng)論