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

题意 :这个题大概是讲,给你几种等级不同的珠宝,然后告诉你它的数量和价值,等级是升序排列的,且随等级的升高价值也随之升高,但为了防止有的客户只购买一个珍珠,所以无论买哪一种的珍珠必须额外付这个等级珍珠的10倍的价钱,要求买够它给定的珍珠的种数中每一种珍珠的数量的总和,要求花费最小,等级低的可以用等级高的代替掉。

思路 : 典型的动态规划,就是求一个最优解嘛,这个题倒不什么难,就是思路对很重要,看了大神的解题报告,0MS,挺好的 。

样例解释 : 样例中最开始的2代表的是测试样例的组数,然后是珍珠的种数,等级按升序排列,然后第一组样例中按照题意可以求出两个结果,一个是(100+10)*1+(100+10)*2 = 330,另一个是(100+100+10)*20 = 4200,显然第一种方法比较优,所以输出330,同理,第二种样例中,(1+10)*10+(1+10)*10+(100+10)*12 =1561,(1+1+10)*11+(100+10)*12=1452,(1+1+100+10)*12 =1344,所以最优解是1344

2
2
100 1
100 2
3
1 10
1 11
100 12
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std ;
const int maxn = ;
int main()
{
int n,m ;
cin>>m;
int ai[maxn],pi[maxn],ans[maxn],sum[maxn] ;
for(int k = ; k < m ; k++)
{
memset(ans,,sizeof(ans)) ;//ans数组最优状态记录
sum[] = ;
cin>>n ;
for(int i = ; i <= n ; i++)
{
cin>>ai[i]>>pi[i] ;
sum[i] = sum[i-]+ai[i] ;//sum数组存的是前i的珠宝总数
ans[i] = (sum[i] +)*pi[i] ;//先将可能最优解存入
}
for(int i = ; i <= n ; i++)
for(int j = ; j <= i ; j++)
ans[i] = min(ans[i],(sum[i]-sum[j]+)*pi[i]+ans[j]) ;
cout<<ans[n]<<endl ;
}
return ;
}

POJ1260Pearls的更多相关文章

随机推荐

  1. Entity Framework 6.1-Code First

    原文:Entity Framework 6.1-Code First Code First-代码优先,先创建好领域模型.新建MyDbContext继承DbContext.根据代码自动生成数据库 Cod ...

  2. 动态链接库加载出错:cannot restore segment prot after reloc: Permission denied

    在执行可执行程序时,出现动态链接库加载出错:cannot restore segment prot after reloc: Permission denied. 主要是由于Linux 内核中提供的强 ...

  3. vc++字符转换

    测试环境: vs2008 开发语言:C++ #include <iostream>#include <windows.h>#include <string> // ...

  4. STL Traits编程技法

    traits编程技法大量运用于STL实现中.通过它在一定程度上弥补了C++不是强型别语言的遗憾,增强了C++关于型别认证方面的能力. traits编程技法是利用“内嵌型别”的编程技法和编译器的temp ...

  5. C++ 中 const 和 static 的作用

    目录 const 的主要应用如下: const 关键字使用的注意点: C++中static关键字有三个明显的作用: const的主要应用如下: const 用于定义常量:const定义的常量编译器可以 ...

  6. centos mail 不能发邮件

    http://alfred-long.iteye.com/blog/1836488 (参考) 最近centos 6.4突然不能发邮件了, 直接用 mail命令测试也不收不到邮件 以下参考大侠们的经验后 ...

  7. Chrome插件:网页截图

    截图(Webpage Screenshot)是一款Chrome浏览器中的截图插件,使用它可以快速地截取网页中的全部内容. 这是介绍地址:http://chromecj.com/blogging/201 ...

  8. canvas主要属性和方法

    canvas主要属性和方法 方法                                   描述 save()                           保存当前环境的状态 res ...

  9. MySQL基础学习之函数

    数学函数 绝对值      abs() 圆周率      PI() 平方根 sqrt() 模除取余   mod(被除数,除数) 随机数      rand() 四舍五入    round(数字) 次方 ...

  10. 增加p()函数,方便开发中对变量打印调试

    在开发的过程中,我们经常要输出一下变量看看得到的结果是什么,我们就要根据变量的类型选择使用echo,print_r或者var_dump,brophp框架中的p()函数会自动根据变量类型选择用什么方法为 ...