这两个题是一样的,不过数据范围不同。

思路1:

在CF713C中,首先考虑使生成序列单调不下降的情况如何求解。因为单调上升的情况可以通过预处理将a[i]减去i转化成单调不下降的情况。

首先,生成的序列中的每个数一定是原序列中的数。于是可以通过dp+离散化技巧解决。dp[i][j]表示把前i个数变成单调不下降的序列,并且a[i]不超过第j大的数所需要的最小代价。

实现1:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = ;
ll a[N], dp[N][N];
int main()
{
int n;
while (cin >> n)
{
for (int i = ; i <= n; i++) { cin >> a[i]; a[i] -= i; }
vector<ll> v(a + , a + n + );
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
int m = v.size();
for (int i = ; i <= n; i++)
{
for (int j = ; j < m; j++)
{
dp[i][j] = dp[i - ][j] + abs(a[i] - v[j]);
if (j) dp[i][j] = min(dp[i][j], dp[i][j - ]);
}
}
cout << dp[n][m - ] << endl;
}
return ;
}

思路2:

n2的复杂度不足以解决hihocoder1942,因此需要进行优化。下面这种数形结合的斜率优化思路参考了

https://codeforces.com/blog/entry/47094?#comment-315161

以下的代码是针对hihocoder1942的实现:

实现2:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = ;
int a[N];
ll solve(int n)
{
ll ans = ;
priority_queue<int> pq;
for (int i = ; i <= n; i++)
{
pq.push(a[i]);
if (a[i] < pq.top())
{
ans += (ll)pq.top() - a[i];
pq.pop();
pq.push(a[i]);
}
}
return ans;
}
int main()
{
int n, x;
while (cin >> n)
{
for (int i = ; i <= n; i++) cin >> a[i];
ll ans = solve(n);
reverse(a + , a + n + );
ans = min(ans, solve(n));
cout << ans << endl;
}
return ;
}

CF713C Sonya and Problem Wihtout a Legend & hihocoder1942 单调序列的更多相关文章

  1. CF713C Sonya and Problem Wihtout a Legend

    考虑我们直接选择一个暴力\(dp\). \(f_{i,j} = min_{k<=j}\ (f_{i - 1,k}) + |a_i - j|\) 我们考虑到我们直接维护在整个数域上\(min(f_ ...

  2. Codeforces 713C Sonya and Problem Wihtout a Legend(单调DP)

    [题目链接] http://codeforces.com/problemset/problem/713/C [题目大意] 给出一个数列,请你经过调整使得其成为严格单调递增的数列,调整就是给某些位置加上 ...

  3. CodeForces 714E Sonya and Problem Wihtout a Legend(单调数列和DP的小研究)

    题意:给你n个数字,每个数字可以加减任何数字,付出变化差值的代价,求最后整个序列是严格单调递增的最小的代价. 首先我们要将这个题目进行转化,因为严格单调下是无法用下面这个dp的方法的,因此我们转化成非 ...

  4. Codeforces Round #371 (Div. 2)E. Sonya and Problem Wihtout a Legend[DP 离散化 LIS相关]

    E. Sonya and Problem Wihtout a Legend time limit per test 5 seconds memory limit per test 256 megaby ...

  5. codeforces 713C C. Sonya and Problem Wihtout a Legend(dp)

    题目链接: C. Sonya and Problem Wihtout a Legend time limit per test 5 seconds memory limit per test 256 ...

  6. 把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend

    //把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend //dp[i][j]:把第i个数转成第j小的数,最小花费 //此题与po ...

  7. Sonya and Problem Wihtout a Legend

    Sonya and Problem Wihtout a Legend Sonya was unable to think of a story for this problem, so here co ...

  8. Codeforces Round #371 (Div. 1) C. Sonya and Problem Wihtout a Legend 贪心

    C. Sonya and Problem Wihtout a Legend 题目连接: http://codeforces.com/contest/713/problem/C Description ...

  9. 【CodeForces】713 C. Sonya and Problem Wihtout a Legend

    [题目]C. Sonya and Problem Wihtout a Legend [题意]给定n个数字,每次操作可以对一个数字±1,求最少操作次数使数列递增.n<=10^5. [算法]动态规划 ...

随机推荐

  1. BZOJ3772:精神污染

    浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...

  2. 数论 最简分数 Farey序列求最简分数+POJ3374

    法雷数列 定义和定理 定义一: 最简分数(也称既约分数或不可约分数).若p,q的最大公约数是1,我们称分数p/q是最简分数. 定义二: 真分数,若p,q是正整数,0<p/q<1, 我们说p ...

  3. Python 同ip网站查询(制作网站接口)

    老师专门打电话回来说不让玩电脑~~   呵呵.  LOL把被人坑死了. 五排果然不适合我. 去翻了下曾经的Python项目. 在爬虫文件夹下面找到了这个. 我也就厚脸皮的什么都不改就放上来了: #co ...

  4. Maven&nbsp;3&nbsp;入门&nbsp;--&nbsp;安装与配置

    Maven 3 入门 -- 安装与配置 Maven以及其Eclipse插件m2eclipse的安装 (本文参考了Maven实战) 检查JDK的安装以及环境变量的配置 打开cmd echo %Java_ ...

  5. android学习点滴一:android环境的搭建

    东一点西一点,很多时间都浪费了.是该系统性的做好自己的东西了. <android学习点滴一:android环境的搭建> [环境变量]变量名:JAVA_HOME变量值:C:\Java\jdk ...

  6. 《深入分析Java Web技术内幕》读后感(Session、cookie)

    第10章 P263 理解Cookie 理解Session Session如何工作的

  7. POJ - 2377 Bad Cowtractors Kru最大生成树

    Bad Cowtractors Bessie has been hired to build a cheap internet network among Farmer John's N (2 < ...

  8. Fenwick Tree / Binary Indexed Tree

    Motivation: Given a 1D array of n elements. [2, 5, -1, 3, 6] range sum query: what's the sum from 2n ...

  9. Web项目开发介绍及实战项目介绍

    引言 本系列课程我们将学些Golang语言中的Web开发框架Iris的相关知识和用法.通过本系列视频课程,大家能够从零到一经历一个完整项目的开发,并在课程中了解实战项目开发的流程和项目设涉及的各个模块 ...

  10. hihoweek 137(简单完全背包)

    题目链接:http://hihocoder.com/contest/hiho137/problem/1 题意:中文题诶- 思路:各层的成本计算不会有影响,所以我们只要把没一层的成本计算出来在求和就是答 ...