傳送門
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個點跑最短路,每次可以跑一條ai權值的邊
則跑出來的dis[i]可以表示最小的可以構造出的w+a1*k
然後就可以統計答案了
**:
#include
#define int long long
#define re register
#define n 500005
using
namespace std;
inline
intrd()
queue<
int>q;
bool vis[n]
;int inf,dis[n]
,a[13
],n,l,r,ans;
inline
void
spfa()
}}}signed
main()
cout
}
墨墨的等式
顯然我們對 a 1 得到每個能到的最小值,然後再用a 1 遞加上去即可。得到能到的最小值跑同餘最短路即可。但是要注意計算的時候比如計算x,那麼要d i x才能計算。ac pragma gcc optimize ofast funroll all loops include define int lo...
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的情況,...