HDU1300DP
/*
HDU1300 DP
特定n饰品种类
每个饰品的两个数据。amount[i]代表数量。price[i]代表单位价格
购买珠宝时要满足下面购买规则:
单独买:每种珠宝要加上数量10
合并买:能够把连续几种珠宝数量合并,再加上10,单位价格依照price最大的计算
求出购买全部的珠宝最少要花费多少 思路: 初始化:第一种珠宝 仅仅须要管当前第i种珠宝的购买
购买方法一:前i-1种依照前面的最优值购买(无后效性),第i种单独买
则: dp[i]=dp[i-1]+price[i]*(amount[i]+10);
购买方法二:从第j种到第i种数量合并购买,当中j从1取到i
则: dp[i]=dp[j-1]+(amount_tot[i]-amount_tot[j-1]+10)*price[i]; 结果:dp[n]
*/
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <math.h>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
using namespace std; #define input freopen("input.txt","r",stdin)
#define output freopen("output.txt","w",stdout)
#define For1(i,a,b) for (i=a;i<b;i++)
#define For2(i,a,b) for (i=a;i<=b;i++)
#define Dec(i,a,b) for (i=a;i>b;i--)
#define Dec2(i,a,b) for (i=a;i>=b;i--)
#define Sca_d(x) scanf("%d",&x)
#define Sca_s(x) scanf("%s",x)
#define Sca_c(x) scanf("%c",&x)
#define Sca_f(x) scanf("%f",&x)
#define Sca_lf(x) scanf("%lf",&x)
#define Fill(x,a) memset(x,a,sizeof(x))
#define MAXN 1005
#define MAXINT 99999999 int main()
{
//input;
int i,j,n,k,t;
int amount[MAXN],amount_tot[MAXN],price[MAXN];
//注意:amount_tot[k]指的是从第1种到第k种珠宝一共同拥有多少个
//也即前序和
__int64 dp[MAXN];
cin>>t;
while(t--)
{
Fill(amount,0);
Fill(amount_tot,0);
Fill(price,0);
Fill(dp,0);
cin>>n;
For2(i,1,n)
Sca_d(amount[i]),amount_tot[i]=amount_tot[i-1]+amount[i],Sca_d(price[i]);
dp[1]=(amount[1]+10)*price[1];
For2(i,2,n)
{
dp[i]=dp[i-1]+price[i]*(amount[i]+10);
For2(j,1,i)
dp[i]=min(dp[j-1]+(amount_tot[i]-amount_tot[j-1]+10)*price[i],dp[i]);
}
cout<<dp[n]<<endl;
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
HDU1300DP的更多相关文章
随机推荐
- Scala中Stream的应用场景及事实上现原理
欢迎訪问我的独立博客:http://cuipengfei.me/blog/2014/10/23/scala-stream-application-scenario-and-how-its-implem ...
- [Java 并发] Java并发编程实践 思维导图 - 第二章 线程安全性
依据<Java并发编程实践>一书整理的思维导图.
- extjs_04_grid(弹出窗口&行编辑器 CRUD数据)
1.弹出窗口(添加.删除) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWRhbV93enM=/font/5a6L5L2T/fontsize/400/f ...
- 【linux】UBUNTU 12.04下傻瓜式简单安装arm-linux-gcc等gnu arm toolchain交叉编译工具
欢迎转载,转载时请保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...
- UVA 10718 Bit Mask 贪心+位运算
题意:给出一个数N,下限L上限U,在[L,U]里面找一个整数,使得N|M最大,且让M最小. 很明显用贪心,用位运算搞了半天,样例过了后还是WA,没考虑清楚... 然后网上翻到了一个人家位运算一句话解决 ...
- 性能测试之LoardRunner 结果分析
性能结果分析是性能测试中的重中之重,也是难点所在,以下总结了看图的一些顺序: 1.首先可以检查Analysis模块提供的Summary Report,整个测试过程中我们所关心的各业务 2.首先关注性能 ...
- Transformations 方块转换
题目是中文题,就不做什么解释了,纯模拟题,主要要搞清楚这几种装换方式下标的变化: 第一种:顺时针旋转90度: c[j][n-i+1]=a[i][j]; 第二种:旋转180度: c[n-i+1][n-j ...
- android 实现代码关机
开始从网上搜索,通过发action的方式实现,不过一直没有成功. Intent intent = new Intent(); intent.setAction(Intent.ACTION_SHUT ...
- How to initialize a static const map in c++?
#include <map> using namespace std; struct A{ static map<int,int> create_map() { map< ...
- 纯后端尝试写一个前端slide插件
概述 由于项目组前端人员缺失,又赶上需要在手机端做一个slide效果的页面,所以只能自己硬着头皮上了,写的很简单,请大家不要笑话,只是拿出来分享下,大家先看下完成后的效果,如下: 过程 看了效果图是不 ...