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...