bzoj 2118 傳送門
一眼望過去是數論題,結果是最短路經典模型???
從乙個很基礎的性質出發:
由$a\equiv b(\mod c)$,得$(a+c*k)\equiv b(\mod c)$
設$a[1]$為$$中的最小值,$dist[i]$為$\mod a[1]=i$的最小數
因為如果$x$合法,則$x+a[1]*k$一定合法。
因此我們只要找到由$$組成,$\mod a[1]$分別為$0,1,2......a[1]-1$的最小的數,
就等於找到了${}$能構成數的集合(選擇$a[1]$是為了保證餘數數量盡可能少)
這樣,我們只要計算對於每個$i$,有多少個$dist[i]+k*a[1]$在$[l,r]$內即可
而求解$dist[i]$就可以交給最短路演算法了(建邊$$)
//by newera
#include using
namespace
std;
typedef
long
long
ll;typedef pair
p;const
int maxn=5e5+5
;ll dat[maxn],n,l,r,dist[maxn];
vector
g[maxn];
void
dijkastra()
}}int
main()
}cout
}
這裡的同餘思想值得借鑑,
如果能找到符合條件的模式,可通過同餘的方式來簡化方案數(變為餘數個數)
bzoj 2118 墨墨的等式
又是好一道數論題!令mn為a 1 a n 中數的最小值。很顯然,如果x能被湊出來,x mn也能被湊出來。所以我們只需要知道對於每乙個x屬於 0,mn 滿足y mn x中最小的y,那麼就能知道 1,r 中模mn等於x的數里能湊出來的個數。注意spfa的時候正無窮要大一點 需要特殊處理一下a 0的情況,...
bzoj2118 墨墨的等式
time limit 10 sec memory limit 259 mb submit 878 solved 337 submit status discuss description 墨墨突然對等式很感興趣,他正在研究a1x1 a2y2 anxn b存在非負整數解的條件,他要求你編寫乙個程式,給...
BZOJ 2118 墨墨的等式
這道題太tm神了。智商 啊 好題啊!找乙個ai,若x為合法的b,則x ai也合法 設bi為最小的x,滿足x mod mn i 求出每個bi就可以求答案了 bi用最短路求就好了啊 意會一下 最後列舉餘數搞一下就算出答案了 好短啊2333 include using namespace std type...