洛谷 P3399 丝绸之路。洛谷 P3399 丝绸之路。

题材背景

张骞于公元前138年就历尽艰险出而了西域。加强了汉朝和西域各国的友好往来。从那以后,一起群骆驼商队在就漫漫的小买卖大道上行走,他们过崇山峻岭,将中华的先进技术带来往中亚、西亚同欧洲,将那里的香、良马传进了本国。每当人们凝视荒凉的戈壁孤烟,无不引起对既往商贸、文化兴盛的遐想……

问题背景

张骞被公元前138年曾经历尽艰险出而了西域。加强了汉朝与西域各国之友好往来。从那以后,一伙群骆驼商队在这漫长的小买卖大道上步履,他们通过崇山峻岭,将中华的先进技术带来往中亚、西亚与欧洲,将那里的香料、良马传进了我国。每当人们瞩目荒凉的荒漠孤烟,无不引起对往商贸、文化兴邦之遐想……

题材叙述

些微仓鼠带在货物,从中华送及睡眠,丝绸之路包括起点与终点一共有N+1独都,0号城市是起点长安,N号城市是终极巴格达。要求不超过M天内须达极限。一龙之流年可于一个城池到连续的生一个市。从i-1城市至i城市离是Di。

大家还知道,连续赶路是生辛苦之,所以小仓鼠可以当一个都市经常,可以出以下选择:

  • 活动:向下一个城市迈进

  • 缓:呆在原的市不动

大漠天气转,在天气特别糟糕经常,前进会遇到不少不便。我们拿M天的第j(1<=j<=M)天的气候恶劣值记为Cj。从i-1城市活动到i城市当第j上前进时,需要消耗Di*Cj的疲劳度。

唯独有点仓鼠还是时有发生选择权的,可以规避比较恶劣之天,休息是不见面耗费疲劳值的。现在异想掌握整个行程最少要耗多少疲劳值。

问题叙述

稍稍仓鼠带在货物,从中华送及睡,丝绸之路包括起点与终点一共有N+1单城市,0号城市是起点长安,N号城市是极巴格达。要求无超M天内得到终点。一天之时间可以从一个邑至连的生一个都会。从i-1城市及i城市离是Di。

世家还了解,连续赶路是异常辛苦之,所以有些仓鼠可以当一个城时,可以起以下选择:

  • 举手投足:向下一个都会迈进

  • 缓:呆在原的城不动

大漠天气转,在天气特别糟糕经常,前进会遇到多不便。我们拿M天的第j(1<=j<=M)天的气象恶劣值记为Cj。从i-1城市运动到i城市当第j上前进时,需要消耗Di*Cj的疲劳度。

只是有些仓鼠还是发生选择权的,可以避开比较恶劣之天,休息是无见面耗费疲劳值的。现在他思念了解合行程最少要耗多少疲劳值。

输入输出格式

输入格式:

 

第一行2个整数N,M

总是N行每行一个平头Dj

连日来M行每行一个平头Cj

 

输出格式:

 

一个平头,表示最好小疲劳度

 

输入输出格式

输入格式:

 

第一行2个整数N,M

连接N行每行一个平头Dj

连续M行每行一个整数Cj

 

出口格式:

 

一个平头,表示最小疲劳度

 

输入输出样例

输入样例#1:

3 5
10
25
15
50
30
15
40
30

出口样例#1:

1125

输入输出样例

输入样例#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

#include<iostream>
#include<cstdio>
#include<cstring>
#define MAXN 2100
using namespace std;
int n,m,c[MAXN],d[MAXN],f[MAXN][MAXN];
int main()
{
    memset(f,0x7f,sizeof f);

    scanf("%d%d",&n,&m);

    for(int i=0;i<=m;i++)
     f[i][0]=0;

    for(int i=1;i<=n;i++)
      scanf("%d",&d[i]);

    for(int i=1;i<=m;i++)
      scanf("%d",&c[i]);

    for(int i=1;i<=m;i++)// 模拟天数
      for(int j=1;j<=min(i,n);j++)// 模拟城市
        f[i][j]=min(f[i-1][j-1]+d[j]*c[i],f[i-1][j]);// 第i-1天走到了j-1城市,第i-1天没走停留在了j城市

    printf("%d",f[m][n]);

    return 0;
}

 

说明

主题时限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

dp[i][j]=min(dp[i][j-1],dp[i-1][j-1]+d[i]*c[j]);

dp[i][j-1]大凡缓了相同上,dp[i-1][j-1]举凡自从达到独都运动来。

屠龙宝刀mg4355手机版点击即送

#include <cstring>
#include <cstdio>
#define min(a,b) a>b?b:a

int dp[1010][1010],n,m,d[1010],c[1010];
int main()
{
    scanf("%d%d",&n,&m);
    memset(dp,127,sizeof(dp));
    for(int i=1;i<=n;++i)
    scanf("%d",&d[i]);
    for(int i=1;i<=m;++i)
    scanf("%d",&c[i]);
    for(int i=0;i<=m;++i)
    dp[0][i]=0;
    for(int i=1;i<=n;++i)
    {
        for(int j=i;j<=m-n+i;j++)
        dp[i][j]=min(dp[i-1][j-1]+d[i]*c[j],dp[i][j-1]);
    }
    int Answer=dp[n][n];
    for(int i=n+1;i<=m;++i) Answer=min(Answer,dp[n][i]);
    printf("%d",Answer);
    return 0;
}

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website