bzoj2118 墨墨的等式

2021-07-10 03:57:37 字數 1105 閱讀 8435

time limit: 10 sec memory limit: 259 mb

submit: 878 solved: 337

[submit][status][discuss]

description

墨墨突然對等式很感興趣,他正在研究a1x1+a2y2+…+anxn=b存在非負整數解的條件,他要求你編寫乙個程式,給定n、、以及b的取值範圍,求出有多少b可以使等式存在非負整數解。

input

輸入的第一行包含3個正整數,分別表示n、bmin、bmax分別表示數列的長度、b的下界、b的上界。輸入的第二行包含n個整數,即數列的值。

output

輸出乙個整數,表示有多少b可以使等式存在非負整數解。

sample input

2 5 10

3 5sample output

hint

對於100%的資料,n≤12,0≤ai≤5*10^5,1≤bmin≤bmax≤10^12。

設最小的點是x,如果y能被湊出來,那麼y+x就也能被湊出來。

這樣把每個點模x之後,用模後的數在0~n-1的點上建圖,這樣跑出來從0到每個點的最短路的長度就是最初到達這個點需要的大小,然後再利用模的數算答案就行了。

#include

#include

#include

using

namespace

std;

#define ll long long

#define inf 0x7ffffffffffff

const

int n=500010;

bool f[n];

struct saa[n*15];

int n,point[n],next[n*15],tot,l[n];

ll bmin,bmax,a[20],dis[n];

inline

void add(int x,int y,ll z)

inline

void spfa()

}}dis[0]=a[1];

}int main()

printf("%lld\n",ans);

}

bzoj 2118 墨墨的等式

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

BZOJ 2118 墨墨的等式

這道題太tm神了。智商 啊 好題啊!找乙個ai,若x為合法的b,則x ai也合法 設bi為最小的x,滿足x mod mn i 求出每個bi就可以求答案了 bi用最短路求就好了啊 意會一下 最後列舉餘數搞一下就算出答案了 好短啊2333 include using namespace std type...

bzoj2118 墨墨的等式

description 墨墨突然對等式很感興趣,他正在研究a1x1 a2y2 anxn b存在非負整數解的條件,他要求你編寫乙個程式,給定n 以及b的取值範圍,求出有多少b可以使等式存在非負整數解。input 輸入的第一行包含3個正整數,分別表示n bmin bmax分別表示數列的長度 b的下界 b...