poj3666(DP+离散化)

news/2024/7/8 6:50:05

题目链接:http://poj.org/problem?id=3666

思路:

看了讨论区说本题的数据比较弱,只需要考虑不减序列即可,比较懒,所以我也只写了这一部分的代码,思路都一样,能AC就行了。

首先要想明白一点,就是将每一个elevation更新后的值一定是原来存在的,因为更新一个elevation最好是与前一个相等,要么与后一个相等,可以从贪心角度去想,这里要先明白,很重要。所以我们将原始数据存在a数组中,将a数组按升序排序后存在b中。用dp[i][j]表示a数组前i个数据中最后一个数据是b[j]的最小代价,则状态转移方程即为:dp[i][j]=dp[i-1][k]+abs(b[j]-a[i]) (k<=j)。因为求dp[i][j]时只会用到dp[i-1][k],所以可以用滚动数组,使空间大大节省。详见代码:

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 
 5 int n,res=0x3f3f3f3f;
 6 int a[2005],b[2005],dp[2005];
 7 
 8 int main(){
 9     scanf("%d",&n);
10     for(int i=1;i<=n;++i){
11         scanf("%d",&a[i]);
12         b[i]=a[i];
13     }
14     sort(b+1,b+n+1);
15     for(int i=1;i<=n;++i){
16         int tmp=0x3f3f3f3f;
17         for(int j=1;j<=n;++j){
18             tmp=min(tmp,dp[j]);
19             dp[j]=tmp+abs(b[j]-a[i]);
20         }
21     }
22     for(int i=1;i<=n;++i)
23         res=min(res,dp[i]);
24     printf("%d\n",res);
25     return 0;
26 }

 

转载于:https://www.cnblogs.com/FrankChen831X/p/10449459.html


http://www.niftyadmin.cn/n/3614046.html

相关文章

4.7 使用string字符串

实例:String字符串的的操作(String在C++中是一个类,而不是数据类型) 问题分析: 目的:练习使用string类表示字符串; 先定义两个string对象,为他们赋值,用“+”号将它们连接起来; 使用find函数查找“Heavy”的位置,使用erase函数删除该字符串,再使用insert函…

七层协议、TCP(粘包-多路复用)、UDP

ip mac可以识别全世界范围内独一无二的一台计算机 port可以标识一台计算机之上的应用软件 网络编程的目的就是开发出一款基于CS结构的应用程序 一、C/S架构 提供数据的一方称之为服务器&#xff08;Server&#xff09;,访问数据的一方称之为客户端&#xff08;Client&#xff…

4.8 实例:矩阵乘法

实例:矩阵乘法 问题分析: 算法描述: 编程: #include<iostream> using namespace std;

4.9 实例:取子字符串

实例:取子字符串 ----用户输入一个字符串,然后输入起始位置k和长度l ----显示从第k个字符开始,长度为l的子字符串 ----要求字符串输入一次,子串操作可以多次,输入位置和长度均为0时停止 问题分析: 算法

Python版本,图片,视频断点续传下载

2019独角兽企业重金招聘Python工程师标准>>> 图片下载 tqdm tqdm是一个快速、扩展性强的进度条工具库&#xff0c;用户只需要封装任意的迭代器 tqdm(iterator)&#xff0c;tqdm官方文档。 对于爬虫进度的监控&#xff0c;这是个不错的工具。 requests模块实现下载 对…

4.10 实例:词频统计

实例:词频统计 ----输入一系列英文单词(单词之间用空格隔开),用“xyz”表示输入结束 ----统计各单词出现的次数(单词不区分大小写),对单词按字典顺序进行排序后输出单词和词频 运行结果: 问题分析:

5.2 函数的定义

函数定义的一般格式: 2. 函数值类型----即函数的返回值类型 (1)返回简单类型,如int,long,float,double,char等 (2)返回结构类型 (3)返回指针类型 (4)返回引用类型 注意:如果函数没有任何返回值,这时函数的返回值类型应标记为void。void类型称为无类型和…

为什么要停止使用RSA密钥交换?

今天我们将讨论为什么你应该停止使用RSA密钥交换。SSL/TLS生态系统的最大弱点之一是其向后兼容性。上周&#xff0c;有六位研究人员发表了一篇论文&#xff0c;详细介绍了一种名为Bleichenbacher CAT的旧漏洞的新变种&#xff0c;该漏洞强调了这种弱点。 那么&#xff0c;让我们…