2019.03.30【NOIP提高組】模擬 A 組 總結

8+5+0=13

沒有除以10

T1:

比賽的時候,推了一下樣例和一個小數據,感覺答案好像很好求

比較難描述,大概就是:一段路程,記路過人數爲x

當x=0時,只需經過一次,x>0時,要經過2x-1次

挺好證僞的,但是我開始了思考,這可以用差分來做

一開始想用線段樹,但是太大了,想了一會優化了一下思路

就真變成差分了,將一個區間拆成兩段,頭+1尾-1

如果頭位置在尾後面就調換位置

然後跑一遍,由於我太相信那個規律,覺得是對的

全程在肝這題,T23無話可說

發現錯了的時候很絕望

正解:

T1:

設一個人的起點是x_i,終點是y_i

上述解法中,我把x_i<y_i與x_i>y_i當成一類情況了(因爲我出小數據時完全沒考慮到)

但實際上兩者不能混爲一談

設走到位置i,有o個人從i到i+1,有p個人從i+1到i

1.如果p>=o

p的每個人都會讓車經過這段路(i~i+1)一次,共2*p次(同時每次從i到i+1都可以帶走o中的一個人)

但由於p是從右往左,我們還得先從i走到i+1,所以最後共2*p+1次(同時可以帶走o中的一個人)

很明顯一次次從右到左的過程中就可以把從左到右的人給帶完,所以只需考慮p

2.如果o>p

o中除了第一個人都會讓車經過這段路一次,共2*o-2次

而第一個人只會經過一次,最後共2*o-1次

很明顯每次從i+1回到i時把p的人帶上可以帶完

而我就是只想到了1,恰好樣例裏2等價爲1

gg

T2:

ans可以表示爲q*p

要求最小質因數不能小於p

我們可以用q減去2~q中最小質因數小於p的數的個數(容斥)

至於怎麼求:

例如我們將2,3,5的倍數減去,會發現6,10,15的倍數減多了,要加回來

加回去後又發現30的倍數加多了,要減回來

設a爲小於q的質數

x爲其中i個數的積

若i爲奇數,則減去q/x,否則加上q/x

即可求出q*p是第幾大

二分q即可

由於:p小時,小於p的質數很少

p大時,ans/p很小,質數的積很容易爆掉

所以不會時超

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