NOI普及組第三次線上測試總結兼題解

T1:

題面:

在這裏插入圖片描述

題解:

用string記錄名字,再輸入求救字符串,每看到s就判斷前兩是否爲so,如果是就ans++,最後判斷最大輸出。

分數:

估分:100

實際:100

T2:

題面:

在這裏插入圖片描述

題解:

普通的dfs,就像細胞那樣,值得一提的是我的判斷:我用了一個數組把每個星座的大小記錄起來,然後遍歷一遍,判重輸出答案。

分數:

估分:100

實際:50

失分:

就是錯在我的那個判斷,我的判斷方法會使最後一種星系沒被判斷到,多判斷一個就ok了。

T3:

題面:

在這裏插入圖片描述

題解:

暴力50%(不過我50不是暴力,而是數據開小了):

把它當成一個無腦 的暴力01揹包問題,把kik_iaia_i當成單純的kik_iaia_i,時間複雜度爲O(kik_i* aia_i*tit_i)。

二進制優化揹包100%:

如果想讓kik_iaia_i不是單純的kik_iaia_i,那就需要二進制優化

首先,我們知道20+21+……2n=2n+1-1,且用20,21……2n,可以組成2n+1以下的所有整數,且絕不超2n+1
然後,根據上面的的定理,我們就能得到2n+1-1的優化,但別的呢???
我們再放一個kik_i-(2n+1-1),再配上前面的就可以組成別的數了。

放一個二進制優化的代碼:

		int q=read(),p=read(),k=1;
		while(k<=p){
			w[++w[0]]=k*q;
			p-=k;
			k*=2;
		}
		if(p!=0)
		w[++w[0]]=p*q;

分數:

估分:100

實際:50

失分:

數據開小了


總結:

這次比賽本來可以AK的,但實在是太不小心了,二,三題都錯在一點細節,數據範圍這個下次一定注意,如果再犯錯了,就發40次古詩。
但這個像第二題一樣的細節問題我也經常犯,我也有驗算數據,但還是錯,請問各位有沒什麼好的方法給我參考參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章