嘟嘟嘟

偶然看到的这道题,觉得有点意思,就做了。

首先题里说修改后的数列只能出现修改前的数,那么状态之间的转移也就之可能在这些数之间。

令f[i][j]表示第 i 个数改成原序列第 j 小的数时的最小步数。容易得出:f[i][j] = min(f[i - 1][k]) + abs(a[i] - b[j]) (1 <= k <= j),其中a是原序列,b是排好序的序列。这样实现了一个O(n3)的dp。

然而n <= 5000,因此我们必须优化掉一层循环,考虑k那一层:f[i - 1][k]其实就是取前缀f[i - 1][j]中的最小值,令g[i][j]表示第 i 个数改成小于等于第 j 个数时的最小步数,那么g[i][j]可以用f[i][j]动态维护,有转移方程:

  f[i][j] = g[i - 1][j] + abs(a[i] - b[j])

  g[i][j] = f[i][j]          (j = 1)

     = min(g[i][j - 1], f[i][j])    (j > 1)

那么答案就是g[n][n]。

另外这道题限制64MB,因此空间上把第一维优化掉。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cctype>
 4 using namespace std;
 5 #define enter puts("")
 6 #define space putchar(' ')
 7 #define Mem(a, x) memset(a, x, sizeof(a))
 8 #define rg register
 9 typedef long long ll;
10 typedef double db;
11 const int INF = 0x3f3f3f3f;
12 const db eps = 1e-8;
13 const int maxn = 5e3 + 5;
14 inline ll read()
15 {
16   ll ans = 0;
17   char ch = getchar(), las = ' ';
18   while(!isdigit(ch)) las = ch, ch = getchar();
19   while(isdigit(ch)) ans = ans * 10 + ch - '0', ch = getchar();
20   if(las == '-') ans = -ans;
21   return ans;
22 }
23 inline void write(ll x)
24 {
25   if(x < 0) putchar('-'), x = -x;
26   if(x >= 10) write(x / 10);
27   putchar(x % 10 + '0');
28 }
29
30 int a[maxn], b[maxn], n;
31 ll f[maxn], g[maxn];
32
33 int main()
34 {
35   n = read();
36   for(int i = 1; i <= n; ++i) a[i] = b[i] = read();
37   sort(b + 1, b + n + 1);
38   for(int i = 1; i <= n; ++i)
39     for(int j = 1; j <= n; ++j)
40       {
41     f[j] = g[j] + abs(a[i] - b[j]);
42     g[j] = j == 1 ? f[j] : min(g[j - 1], f[j]);
43       }
44   write(g[n]); enter;
45   return 0;
46 }

View Code

转载于:https://www.cnblogs.com/mrclr/p/9755273.html

CF13C Sequence相关推荐

  1. 【CodeForces】CF13C Sequence(配数学证明)

    题目地址: https://www.luogu.com.cn/problem/CF13C 题面翻译: 给定一个序列,每次操作可以把某个数加111或者减111.要求把序列变成非降数列.而且要求修改后的数 ...

  2. cf13C Sequence(DP)

    题意: N个数.a1...aN. 对于每个数而言,每一步只能加一或减一. 问最少总共需要多少步使得新序列是非递减序列. N (1 ≤ N ≤ 5000) 思路: *一个还不知道怎么证明的结论(待证): ...

  3. Bi-LSTM-CRF for Sequence Labeling

    做了一段时间的Sequence Labeling的工作,发现在NER任务上面,很多论文都采用LSTM-CRFs的结构.CRF在最后一层应用进来可以考虑到概率最大的最优label路径,可以提高指标. 一 ...

  4. Oracle 12C -- 基于sequence的列的默认值

    12C支持先创建一个sequence,然后再将该sequence指定为某个列的值的默认表达式. 和"identity column"具有以下不同点: ·对列的个数没有限制 ·seq ...

  5. DP UVALive 6506 Padovan Sequence

    题目传送门 /*题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[ ...

  6. HDOJ-2062 :Subset sequence(DP)

    题目:求子集序列 Consider the aggregate An= { 1, 2, -, n }. For example, A1={1}, A3={1,2,3}. A subset sequen ...

  7. Gold Code,Gold Sequence

    Gold Code Gold Code是以Robert Gold的名字命名的.它是一组特殊的二进制随机(伪随机)序列,其中成员序列之间的相关性很小.由于这种特性(较小的相关性),它被广泛地用作各种无线 ...

  8. HDU 1711 Number Sequence(KMP算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...

  9. 【C++】C++11 STL算法(一):非修改序列操作(Non-modifying sequence operations)

    目录 一.all_of.any_of.none_of: 1.官方说明 2.谓词 3.STL算法对谓词的说明 4.谓词的五种模式 5.all_of (C++ 11) 6.any_of (C++ 11) ...

最新文章

  1. java抽象的理解_Java中抽象类的理解
  2. html2Escape js 转义
  3. hadoop集群崩溃恢复记录
  4. 动态生成表格、隐藏表格、选中删除任意行、jquery、输入验证
  5. 使用DataWorks来调度AnalyticDB任务
  6. iscroll的使用
  7. MapReduce实现计数
  8. Java面试官:Kafka集群管理
  9. Word 中插入 C/C++ 代码(转)
  10. Widget改变大小
  11. sampro效果_SAM机架设置音乐/话筒/麦克风/输入和效果输出/添加VST插件/详细教程(附:SAM机架VST插件效果包下载)...
  12. 关于舵轮AGV 的数学模型
  13. 3K水稻SNP数据集的简单利用
  14. 2019银保监计算机类真题,2019中国银保监会招聘考试全真模拟卷(计算机类)
  15. java毕业设计鞍山丘比特房屋租赁管理系统Mybatis+系统+数据库+调试部署
  16. IOB Inside-outside-beginning (tagging)
  17. 华为无线网代理服务器端口是什么意思,华为ES1D2G48SFA0 48端口十兆/百兆/千兆以太网电接口板(FA,RJ45) (适用于华为S7700系列交换机)...
  18. DSPE-PEG-LyP-1(CGNKRTRGC)(二硬脂酰基磷脂酰乙醇胺-聚乙二醇-肿瘤靶向蛋白);肿瘤淋巴管归巢肽
  19. 系统架构设计师-总结说明
  20. matlab R2011a汉化包,MATLAB R2011a (7.12)发布了,MATLAB R2011a最新功能

热门文章

  1. 单片机读取obd_OBD_CAN读取代码(stm32f103)
  2. SOM网络1:原理讲解
  3. 7.4 初等矩阵和可逆性
  4. Oxygen XML Editor Mac版(基于Java的XML编辑器)
  5. Mybatis-plus读取(GeoJson)和保存Postgis geography数据
  6. module xxx missing dependencies
  7. C语言之顺序程序设计学习笔记
  8. 关于Neuro-Fuzzy Designer的使用
  9. GD32F30x系列系统及存储器架构
  10. 机器人潘森护盾_[翻译团]10.21版本五大强势辅助:潘森、蕾欧娜、机器人、巴德、璐璐...