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很小,質數的積很容易爆掉
所以不會時超