caioj 1063 动态规划入门(一维一边推1:美元和马克)
这道题一开始我是这么想的
最后的答案肯定是某次的马克换回来的,但这个该怎么确定??
实际上应该把范围缩小,只看最后一次和倒数第二次之间有什么联系。
可以发现,只有两种可能,最后一天换或者不换。换的话就要求出
最后一天之前最多的马克,不换的话就是最后一天前最多的美元。
设d[i]为前i次最多的美元,m[i]为前i次最多的马克,x为今天换的值
那么可以得到
d[i] = max(d[i-1], m[i-1] * 100 / x)
m[i] = max(m[i-1], d[i-1] * x / 100)
最后d[n]就是答案
大致步骤
先尝试设立状态
然后判断当前状态可以由哪些状态推来,写转移方程
写出答案和起始条件
#include<cstdio>
#include<algorithm>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std;const int MAXN = 112;
double d[MAXN], m[MAXN];
int n;int main()
{double x;scanf("%d%lf", &n, &x);d[0] = 100;m[0] = x;REP(i, 1, n){scanf("%lf", &x);d[i] = max(d[i-1], m[i-1] * 100 / x);m[i] = max(m[i-1], d[i-1] * x / 100);}printf("%.2lf\n", d[n-1]);return 0;
}
转载于:https://www.cnblogs.com/sugewud/p/9819435.html
caioj 1063 动态规划入门(一维一边推1:美元和马克)相关推荐
- caioj 1066 动态规划入门(一维一边推4:护卫队)(分组型dp总结)
很容易想到f[i]为前i项的最优价值,但是我一直在纠结如果重量满了该怎么办. 正解有点枚举的味道. 就是枚举当前这辆车与这辆车以前的组合一组,在能组的里面取最优的. 然后要记得初始化,因为有min,所 ...
- caioj 1069 动态规划入门(二维一边推2:顺序对齐)(最长公共子序列拓展总结)
caioj 1068是最长公共子序列裸体,秒过, 就不写博客了 caioj 1069到1071 都是最长公共字序列的拓展,我总结出了一个模型,屡试不爽 (1) 字符串下标从1开始,因为0用来表示 ...
- 洛谷P1280 caioj 1085 动态规划入门(非常规DP9:尼克的任务)
这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...
- caioj 1081 动态规划入门(非常规DP5:观光游览)
这道题和前面的分组的题有点像 就是枚举最后一组的长度. 然后组数可以在第一层循环也可以在第二层循环 我自己的话就统一一下在第一层循环吧 然后这道题题意我一直没理解清楚,浪费了很多时间,写复杂了 同时初 ...
- caioj 1077 动态规划入门(非常规DP1:筷子)
首先可以看出排序之后,最优解肯定是每一对都相邻才是最优的 那么我们就要找构成最优解的相邻组 设f[i][j]是前i个字符,k对的最小值 如果当前这个筷子不取的话,f[i][j] = f[i-1][j] ...
- 动态规划入门到熟悉,看不懂来打我啊
动态规划入门到熟悉,看不懂来打我啊 兔子hebtu666 本文链接:https://blog.csdn.net/hebtu666/article/details/100585136 2.1斐波那契系列 ...
- LQ训练营(C++)学习笔记_动态规划入门
动态规划入门 五.动态规划入门 1.动态介绍 1.1动态规划基本思路 1.2 动态规划基本概念 1.2.1 阶段 1.2.2 状态 1.2.3 决策 1.2.4 状态转移方程 1.2.5 策略 1.3 ...
- 动态规划入门问题:猴子与香蕉
动态规划入门问题猴子与香蕉 一.猴子与香蕉 题目描述 一组研究人员正在设计一个测试猴子IQ的实验.他们把香蕉吊在屋顶上,同时给猴子提供了砖块.如果猴子够聪明,它会把砖块一个个叠起来做成一个塔,然后爬上 ...
- 动态规划入门之国王的金矿
最近学习算法,对动态规划不太了解,使用的时候照搬转移方程式,知其然不知其所以然,今天看到一篇动态规划的教程,解释得非常通俗,原文在这里[动态规划入门教程] (http://blog.csdn.net/ ...
最新文章
- ARTS打卡计划第四周-TIPS-自定义一个LikeFilter
- cisco engine memory
- 吴恩达机器学习之多变量线性回归实现部分
- Acoustica 7 for mac最新版 (数字音频编辑器)
- JS去除数组中重复的值(四种方法)
- 使用visio 2010建立sql server数据模型——手动画、利用逆向工程
- 【转】图解Sql2005创建分区表的全过程
- gitee如何搭建mysql_Gitee的下载安装配置及使用步骤详解
- Windows电脑搜索功能不能用怎么办
- 人工智能python营_AI人工智能训练营
- Selenium + C# 实现模拟百度贴吧签到 2
- JavaScript 页面刷新方法
- 计算机之父图灵获英女王赦免
- 沟通的法宝!三季人法则
- 我的日常工作剖析,美好的一天,从每一天开始。
- The APR based Apache Tomcat Native library which allows optimal performance in production environm
- 在Windows下安装和使用vim
- Matlab学习日记(5)二维曲线的绘制(plot与fplot)
- 测试你好世界这个标题
- QGIS教程-4:添加精美底图的三种方法
热门文章
- c语言printf%%,c语言printf实现同一位置打印输出的实例分享
- 二叉平衡树算法c语言,算法9-9~9-12:平衡二叉树的基本操作 (C语言代码)
- node更新到最新版本_云顶之弈10.24版本临时更新永恩、劫大砍,最新上分阵容推荐...
- wxwidgets mysql_Ubuntu下wxWidgets学生公寓管理编程,sqlite3的用法(mysql数据_MySQL
- 胃癌2019csco指南_领读指南沈琳:2019CSCO胃癌指南重要更新
- matlab的默认字体_matlab默认字体设置
- win2012每次启动显示服务器管理器,win2012r2服务器管理器打开角色.功能出错
- oracle怎样开启服务,Oracle 11g必须开启的服务及服务详细介绍
- 赋值后页面不渲染_第七节:框架搭建之页面静态化的剖析
- C++ :sqlite3使用: