ZOJ 1563 Pearls(动态规划)
/*
分析:
因为他给的数据是递增的 而求得是这些数据总的 最优解
所以我们可以考虑,它的子问题求解不影响总的求解 也就是我们可以先求出 第一个的最优解 第二个....以此类推到总的最优解
那么我们想如何利用前面一个的最优解推出当前的最优解 考虑这个与背包问题类似 我们在加入当前物品时判断当前加入后是否影响到
前面的最优解
那我们就来分析 我们需要什么要的数据
因为题目中计算最优解的时候每个等级的Money是固定的 而我们的每个等级所需要买的珍珠数量是不一定的 我的记录最优解的状态是记录
前n个等级所得出来的最优解。
则可以确定的是 Money[max],dp[max]是需要的。接下来是分析(每个等级所需要买的珍珠数量是不一定)
因为我们是根据前n等级的最优解就是前n等级下的花的最少的钱 我们知道的是当前等级的数量和价格
我们想知道的是用当前等级的价格去买该等级以下的珍珠是否比前面的解法更优 而如果用遍历用当前等级的价格买该等级以下的所有情况。
这些情况我们列举一下 就是1...n ,2..n,3....n,...,n-1...n;所需要知道的就是这些阶段的珍珠数量。而我们可以用sum[i]记录前i个的所有珍珠,获得
想要阶段的珍珠数量只需要sum[n]-sum[i]就可以了 。
分析到这里我们就可以写动态方程了。 dp for(i=1;i<=n;i++) dp[i]=1000000;
for(j=0;j<i;j++)
动态方程就是 dp[i]=min(dp[i],dp[j]+(sum[i]-sum[j]+10)*money[i]);
*/
#include<iostream>
#include<cstring>
#include<algorithm>
#include<climits>
using namespace std;
int sum[],money[];
int dp[];
int main(void)
{
int t,n,j;
cin>>t;
while(t--)
{
cin>>n;
memset(dp,,sizeof(dp));
sum[]=;
for(int i=;i<=n;i++)
{
cin>>j>>money[i];
sum[i]=sum[i-]+j;
}
for(int i=;i<=n;i++)
{
dp[i]=INT_MAX;
for(j=;j<i;j++)
{
dp[i]=min(dp[i],dp[j]+(sum[i]-sum[j]+)*money[i]);
}
}
cout<<dp[n]<<endl;
}
return ;
}
ZOJ 1563 Pearls(动态规划)的更多相关文章
- HDU-5009 Paint Pearls 动态规划 双向链表
题目链接:https://cn.vjudge.net/problem/HDU-5009 题意 给一串序列,可以任意分割多次序列,每次分割的代价是被分割区间中的数字种数. 求分割区间的最小代价.n< ...
- HDU 5009 Paint Pearls (动态规划)
Paint Pearls Problem Description Lee has a string of n pearls. In the beginning, all the pearls have ...
- ACM学习历程——POJ1260 Pearls(动态规划)
Description In Pearlania everybody is fond of pearls. One company, called The Royal Pearl, produces ...
- [ACM_动态规划] ZOJ 1425 Crossed Matchings(交叉最大匹配 动态规划)
Description There are two rows of positive integer numbers. We can draw one line segment between any ...
- ZOJ 2672 Fibonacci Subsequence(动态规划+hash)
题意:在给定的数组里,寻找一个最长的序列,满足ai-2+ai-1=ai.并输出这个序列. 很容易想到一个DP方程 dp[i][j]=max(dp[k][i])+1. (a[k]+a[i]==a[j], ...
- [ZOJ 3662] Math Magic (动态规划+状态压缩)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3662 之前写过这道题,结果被康神吐槽说代码写的挫. 的确,那时候 ...
- ZOJ 1234 Chopsticks(动态规划)
Chopsticks 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=234 题目大意:给定n个筷子的长度,取k+8套筷 ...
- HDOJ 1081(ZOJ 1074) To The Max(动态规划)
Problem Description Given a two-dimensional array of positive and negative integers, a sub-rectangle ...
- 随手练——ZOJ 1093 Monkey and Banana(动态规划)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=93 一堆科学家研究猩猩的智商,给他M种长方体,每种N个. 然后,将一个 ...
随机推荐
- wx.Dialog
wx.Dialog A dialog box is a window with a title bar and sometimes a system menu, which can be moved ...
- UpdatePanel局部刷新用法
AjaxTest.aspx代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&qu ...
- [C#参考]属性
属性和字段不同,属性是一个函数成员:它提供灵活的机制来读取.编写或计算某个私有字段的值. 可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器”的特殊方法. 这使得可以轻松访问数据,此外还有 ...
- Git 系列(三):建立你的第一个 Git 仓库
现在是时候学习怎样创建你自己的 Git 仓库了,还有怎样增加文件和完成提交. 在本系列前面的文章中,你已经学习了怎样作为一个最终用户与 Git 进行交互:你就像一个漫无目的的流浪者一样偶然发现了一个开 ...
- 项目中怎么去掉tomcat的猫
其实很简单,需要在登录页和显示内容的主页,将自己的favicon.ico 导入,并在登录页和主页将其引入即可. 例如: 接着在登录页引入 <link rel="shortcut ic ...
- 学习python 一些错误记录
1. TypeError: 'unicode' object is not callable当遇到这样的错误时候, 一般是属性当做方法调用了,比如,selenium 脚本, driver.title ...
- C#两路list数组归并去重
两个相同类型已排序数据进行合并,虽然list数组中有AddRange方法,但它只是把第二个数组从第一个数组末尾插入,假如两个数组有重复数据,保存进去.还有Union方法合并去重,首先会从第一个数组进行 ...
- loading 动画效果(收藏起来以后留着慢慢用)
动画效果一: html代码: <div class="spinner"> <div class="rect1"></div&g ...
- 自定义Edit控件控制输入范围
//自定义Edit,实现十六进制输入控制,使用OnChar()函数实现 //MyEdit.h #pragma once class CMyEdit : public CEdit { DECLARE_D ...
- Qt信号槽机制的实现(面试的感悟,猜测每一个类保存的一个信号和槽的二维表,实际使用函数指针 元对象 还有类型安全的检查设定等等)
因为面试时问了我这道题,导致我想去了解信号槽到底是如何实现的,于是贴着顺序看了下源码,大致了解了整个框架.网上关于信号槽的文章也很多,但是大部分都是将如何应用的,这里我就写一下我所理解的如何实现吧, ...