• poj 1260 Pearls(dp)


    题目:http://poj.org/problem?id=1260

    题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠。

    珍珠的替代必须是连续的,不能跳跃替代(这个不难证明,因为假如用第i+2类去替代第i类珍珠,会使最终的支付价格降低,那么用第i+1类去替代第i类珍珠会使最终的支付价格更加低)

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     int t,i,j,num,minn,sum;
    10     int d[1100],n[1100],p[1100];
    11     cin>>t;
    12     while(t--)
    13     {
    14         cin>>num;
    15         for(i=1; i<=num; i++)
    16         cin>>n[i]>>p[i];
    17         d[0]=0;
    18         for(i=1; i<=num; i++)
    19         {
    20             minn=1000000000; sum=n[i];
    21             for(j=i-1; j>=0; j--)
    22             {
    23                 minn=min(minn,d[j]+(sum+10)*p[i]);//状态转移方程,d[i]表示到i种的时候的最优值,在这个循环里是
    24                 //比较前面的最优加 后面(到i)所有种珍珠转换成第i种珍珠的值。
    25                 sum+=n[j];
    26             }
    27             d[i]=minn;
    28         }
    29         cout<<d[num]<<endl;
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    使用springboot2+elasticsearch7注意事项
    jwt使用
    CTF web之旅 15
    CTF web之旅 14
    CTF web之旅 13
    CTF web之旅 12
    CTF web之旅 11
    CTF web之旅 10
    CTF web之旅 9
    CTF web之旅 8
  • 原文地址:https://www.cnblogs.com/bfshm/p/3386705.html
Copyright © 2020-2023  润新知