test 零食店 (dp 二分)

2021-07-24 09:48:01 字數 1493 閱讀 3922

零食店

snackstore.in   snackstore.out  

時間限制:1 s   記憶體限制:256 mb

【題目描述】

成功找到了學長之後學姐感覺到有些餓,於是決定去附近的零食店給自己和學長買些零食。

焦作市的有n家零食店,由m條道路連線著這些零食店,每條道路都有自己的長度l,每家零食店都有自己的消費指數。

由於學姐是個窮b,所以去買零食的路上不能經過某些消費指數超過一定限度的店。

同時由於學姐體力有限,所以去買零食的過程中走的路程不能太長。

想來想去學姐決定去問學長買什麼零食比較好,反正到最後都是學長吃╮(╯_╰)╭

在去問之前,學姐準備先做好準備,她把焦作市(所有零食店)的地圖給了你,希望你能編出乙個程式快速回答她從某個零食店出發,在上述限制下有多少家零食店可供她挑選。

【輸入格式】

第一行三個正整數n,m,q,分別代表零食店數,道路數和詢問數。

接下來一行n個正整數,第i個正整數vi代表第i家零食店的消費指數。

接下來m行,第i行三個正整數x,y,l,代表第i條道路連線編號為x和y的兩個零食店,長度為l。

接下來q行第i行三個正整數s,c,d,代表第i個詢問要求從s出發,所經過的零食店的消費指數不能超過c(除了起點和終點以外),且行走路程不超過d。

【輸出格式】

一共q行,第i行乙個整數代表在第i個詢問的要求下有多少家零食店可供學姐挑選。

【樣例輸入】

5 5 2

1 2 3 4 5

1 2 1

1 3 4

2 3 2

1 4 3

2 5 1

1 1 3

2 1 2

【樣例輸出】 2

3【提示】

樣例中第乙個詢問能去編號為2/4的零食店。

第二個詢問能去編號為1/3/5的零食店。

對於40%的資料,n≤10,m≤20,q=1。

對於70%的資料,m≤500,q≤10000。

對於100%的資料,n≤100,m≤10000,q≤1000000,vi,c,d≤10^9,1≤x,y,s≤n,l≤10^6。

題解: dp+二分

f[k][i][j]表示中間點為消費指數前k的點,從i到j的最短路徑。

f[k][i][j]=min(f[k-1][i][j],f[k-1][i][id[k]]+f[k-1][id[k]][j])

然後在計算答案的時候二分小於等於c的最後乙個位置k,統計f[k][x][i]的答案。

#include#include#include#include#include#define n 203

#define ll long long

using namespace std;

int n,m,q,val[n],vc[n],id[n];

int dis[n][n][n];

int cmp(int x,int y)

{ return val[x]

區間DP 洛谷P2858牛奶零食

題目鏈結 題意 你有n個貨物從1 n依次排列,每天可以從兩側選乙個出來賣,賣的 是當天的天數乘該貨物的初始 問這批貨物賣完的最大 輸入 第一行n,之後是n個貨物的初始價值 這道題不能用貪心做,因為可能存在右端點非常大,但其左邊的數非常小,但因為右端點太大而沒被及時賣出 如 9 9 9 1 1 10 ...

用多執行緒來解決多人分零食問題

x 用多執行緒來解決多人分零食問題 執行緒的建立和啟動有兩種方式 1,繼承於執行緒類thread來建立執行緒2,利用實現於runnable的方式建立執行緒 用法 先自定乙個類,然後繼承於thread類,在自定義類中要覆蓋thread類中的run 方法,run 方法中寫自己需要開啟執行緒的 之後在主方...

洛谷P5075 JSOI2012 分零食

題目大意 有 m m leqslant10 8 個人站成一排,有 n n leqslant10 4 個糖果,若第 i 個人沒有糖果,那麼第 i 1 個人也沒有糖果。乙個人有 x 個糖果會獲得快樂值 v x v x begin ax 2 bx c x 1 1 x 1 end 乙個方案的價值為 prod...