取模最短路

2021-08-19 01:27:46 字數 669 閱讀 5784

題意:給你乙個大小為n的集合s,集合裡有n個互不相同正整數.

有q個詢問,每次詢問是否能選擇s中的一些數字 ( 同乙個數字可以選擇多次,也可以任何數字都不選),使它們相加的和為m.

思路:因為給的資料很大,所以不能用揹包。那麼我們使用取模最短路的思想。假設我們是對a[1]進行取模。如果說我們得到了所有模a[1]餘r的數中的最小的乙個,記為dis[r],那麼如果有數模a[1]餘r,那麼只要這個數大於dis[r],這個數就可以被表示。所以我們就用最短路演算法尋找每乙個dis[r]

**:

#include#include#include#includeusing namespace std;

typedef pairp;

const int maxn=20001;

const int maxm=50001;

const int inf=0x3f3f3f3f;

int a[maxn],dis[maxm]; //dis[r]表示所有模a1餘r的數中,能被表示出來的最小的數

bool vis[maxm];

priority_queue,greater> pq;

inline void dijkstra(int sz,int s)

int main()

}return 0;

}

hdoj 6071 模空間下最短路

題目傳送門 題目大意是編號為1,2,3,4的四個點,1連4和2,2連1和3,3連2和4,4連1和3,永遠從2號點出發回到2號點,要求跑的距離不小於k,問可以跑的最短距離是多少。這裡有乙個trick,由於我們從二號點出發,最終又要回到二號點,因此對於一條從從二號點出發最終又回到二號點的路徑,我們可以從...

最短路 Dijstra演算法和spfa演算法模板

一 dijstra模板 給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,所有邊權均為正值。請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出 1。輸入格式 第一行包含整數n和m。接下來m行每行包含三個整數x,y,z,表示存在一條從點x到點y的有向邊,邊長為z。輸出格式 輸出乙...

最短路 最短路徑問題

題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。input 共有n m 3行,其中 第一行為乙個整數n。第2行...