墨墨的等式

2021-10-07 19:40:02 字數 638 閱讀 3198

顯然我們對%a[1]得到每個能到的最小值,然後再用a[1]遞加上去即可。

得到能到的最小值跑同餘最短路即可。

但是要注意計算的時候比如計算x,那麼要d[i]<=x才能計算。

ac**:

#pragma gcc optimize("-ofast","-funroll-all-loops")

#include

#define int long long

using namespace std;

const

int n=

5e5+10;

int n,a[n]

,l,r,d[n]

,vis[n]

,res;

void

dijkstra()

);memset

(d,0x3f

,sizeof d)

; d[0]

=0;while

(q.size()

));}

}}inline

intcalc

(int x,

int id)

signed

main()

cout

}

FROM LUOGU 墨墨的等式

傳送門 sol 注意到 b 1e12,而ai 5e5,那麼如果除掉乙個ai也許能過 發現 a1x1 a2x2 anxn b x1 a2 a1x2 an a1xn b a1 假設 b mod a1 w a1為公升序sort後的值 則所有w a1k k為正整數 都可以由w轉到,則考慮0到a1 1共a1個...

2118 墨墨的等式

分析 最短路。題意就是判斷 l,r 內多少數,可以被許多個a1,a2,a3.構成。設最小的mi min。l,r 1e12 直接列舉肯定超時,那麼換個方法列舉。考慮乙個能構成的數b,它一定可以分解為 b k times m i r,r考慮如何計算最小的,mi r的數 建一張無向圖,共mi個點,u表示 ...

bzoj 2118 墨墨的等式

又是好一道數論題!令mn為a 1 a n 中數的最小值。很顯然,如果x能被湊出來,x mn也能被湊出來。所以我們只需要知道對於每乙個x屬於 0,mn 滿足y mn x中最小的y,那麼就能知道 1,r 中模mn等於x的數里能湊出來的個數。注意spfa的時候正無窮要大一點 需要特殊處理一下a 0的情況,...