日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷10月月赛Round.1| P3399 丝绸之路 [DP]

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷10月月赛Round.1| P3399 丝绸之路 [DP] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目背景

張騫于公元前138年曾歷盡艱險出使過西域。加強了漢朝與西域各國的友好往來。從那以后,一隊隊駱駝商隊在這漫長的商貿大道上行進,他們越過崇山峻嶺,將中國的先進技術帶向中亞、西亞和歐洲,將那里的香料、良馬傳進了我國。每當人們凝望荒涼的大漠孤煙,無不引起對往日商貿、文化繁榮的遐想……

題目描述

小倉鼠帶著貨物,從中國送到安息,絲綢之路包括起點和終點一共有N+1個城市,0號城市是起點長安,N號城市是終點巴格達。要求不超過M天內必須到達終點。一天的時間可以從一個城市到連續的下一個城市。從i-1城市到i城市距離是Di。

大家都知道,連續趕路是很辛苦的,所以小倉鼠可以在一個城市時,可以有以下選擇:

  • 移動:向下一個城市進發

  • 休息:呆在原來的城市不動

沙漠天氣變化無常,在天氣很不好時,前進會遇到很多困難。我們把M天的第j(1<=j<=M)天的氣候惡劣值記為Cj。從i-1城市移動到i城市在第j天進發時,需要耗費Di*Cj的疲勞度。

不過小倉鼠還是有選擇權的,可以避開比較惡劣的天氣,休息是不會消耗疲勞值的?,F在他想知道整個行程最少要消耗多少疲勞值。

輸入輸出格式

輸入格式:

?

第一行2個整數N,M

連續N行每行一個整數Dj

連續M行每行一個整數Cj

?

輸出格式:

?

一個整數,表示最小疲勞度

?

輸入輸出樣例

輸入樣例#1:
3 5 10 25 15 50 30 15 40 30 輸出樣例#1:
1125

說明

本題時限1s,內存限制128M,因新評測機速度較為接近NOIP評測機速度,請注意常數問題帶來的影響。

第1天休息

第2天0->1 疲勞值 10 × 30 = 300 .

第3天1->2 疲勞值 25 × 15 = 375 .

第4天休息

第5天2->3 疲勞值 15 × 30 = 450 .

1 ≦ N ≦ M ≦ 1000

1 ≦ Di , Ci ≦ 1000


?

煞筆DP

f[i][j]到i個城市j天

愚蠢啊初始化偷懶結果f[0][0]沒初始化只拿了43分

// // main.cpp // luogu10.1 // // Created by Candy on 10/3/16. // Copyright ? 2016 Candy. All rights reserved. // #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <vector> #include <string> using namespace std; const int N=1e3+5,INF=(1<<30); inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x; } int n,m,d[N],c[N]; int f[N][N]; void dp(){for(int i=0;i<=m;i++) f[0][i]=0;for(int i=1;i<=n;i++)for(int j=i;j<=m;j++){f[i][j]=f[i][j-1];if(f[i-1][j-1]<INF&&f[i-1][j-1]+d[i]*c[j]<f[i][j])f[i][j]=f[i-1][j-1]+d[i]*c[j];//printf("%d %d %d\n",i,j,f[i][j]); } } int main(int argc, const char * argv[]){memset(f,127,sizeof(f));n=read();m=read();for(int i=1;i<=n;i++) d[i]=read();for(int i=1;i<=m;i++) c[i]=read();dp();printf("%d",f[n][m]);return 0; }

?

轉載于:https://www.cnblogs.com/candy99/p/5930687.html

總結

以上是生活随笔為你收集整理的洛谷10月月赛Round.1| P3399 丝绸之路 [DP]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。