博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CF 590D Top Secret Task【dp递推+滚动数组】【好题】
阅读量:5769 次
发布时间:2019-06-18

本文共 3514 字,大约阅读时间需要 11 分钟。

D. Top Secret Task
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

A top-secret military base under the command of Colonel Zuev is expecting an inspection from the Ministry of Defence. According to the charter, each top-secret military base must include a top-secret troop that should... well, we cannot tell you exactly what it should do, it is a top secret troop at the end. The problem is that Zuev's base is missing this top-secret troop for some reasons.

The colonel decided to deal with the problem immediately and ordered to line up in a single line all n soldiers of the base entrusted to him. Zuev knows that the loquacity of the i-th soldier from the left is equal to qi. Zuev wants to form the top-secret troop using k leftmost soldiers in the line, thus he wants their total loquacity to be as small as possible (as the troop should remain top-secret). To achieve this, he is going to choose a pair of consecutive soldiers and swap them. He intends to do so no more than s times. Note that any soldier can be a participant of such swaps for any number of times. The problem turned out to be unusual, and colonel Zuev asked you to help.

Determine, what is the minimum total loquacity of the first k soldiers in the line, that can be achieved by performing no more than s swaps of two consecutive soldiers.

Input

The first line of the input contains three positive integers nks (1 ≤ k ≤ n ≤ 1501 ≤ s ≤ 109) — the number of soldiers in the line, the size of the top-secret troop to be formed and the maximum possible number of swap operations of the consecutive pair of soldiers, respectively.

The second line of the input contains n integer qi (1 ≤ qi ≤ 1 000 000) — the values of loquacity of soldiers in order they follow in line from left to right.

Output

Print a single integer — the minimum possible total loquacity of the top-secret troop.

Examples
input
3 2 22 4 1
output
3
input
5 4 210 1 6 2 5
output
18
input
5 2 33 1 4 2 5
output
3
Note

In the first sample Colonel has to swap second and third soldiers, he doesn't really need the remaining swap. The resulting soldiers order is: (214). Minimum possible summary loquacity of the secret troop is 3. In the second sample Colonel will perform swaps in the following order:

  1. (10, 1, 6 — 2, 5)
  2. (10, 1, 2, 6 — 5)

The resulting soldiers order is (10, 1, 2, 5, 6).

Minimum possible summary loquacity is equal to 18.

有n个数,有s此操作,每次操作可以交换两个相邻的数,现在要求前经过s此操作,前k个数的和最小为多少

则dp[i][j][k]表示前i位中选,放了j个,用了k次操作,递推即可

注意s超过n(n-1)/2时最后肯定为k个最小的和

#include 
#define INF 0x3f3f3f3f#define ms(x,y) memset(x,y,sizeof(x))using namespace std;typedef long long ll;const double pi = acos(-1.0);const int mod = 1e9 + 7;const int maxn = 155;ll dp[2][maxn][maxn*maxn];ll a[maxn];int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n, k, s; while (~scanf("%d%d%d", &n, &k, &s)) { ms(dp, INF); dp[0][0][0] = 0; for (int i = 1; i <= n; ++i) { scanf("%lld", &a[i]); } for (int i = 1; i <= n; ++i) { ms(dp[i & 1][0], 0); for (int j = 1; j <= i; ++j) { for (int k = 0; k <= i*j; ++k) { dp[i & 1][j][k] = dp[(i - 1) & 1][j][k]; if (k >= i - j) { dp[i & 1][j][k] = min(dp[i & 1][j][k], dp[(i - 1) & 1][j - 1][k - (i - j)] + a[i]); } } } } ll ans = INF; for (int i = 0; i <= min(s,(n*(n-1)/2)); i++) { ans = min(ans, dp[n & 1][k][i]); } printf("%lld\n", ans); } return 0;}

转载于:https://www.cnblogs.com/Archger/p/8451575.html

你可能感兴趣的文章
LeetCode36.有效的数独 JavaScript
查看>>
Scrapy基本用法
查看>>
PAT A1030 动态规划
查看>>
10年java架构师教你如何快速打好Java基础?
查看>>
DOS Network一月项目月报
查看>>
自制一个 elasticsearch-spring-boot-starter
查看>>
软件开发学习的5大技巧,你知道吗?
查看>>
面试题 LazyMan 的Rxjs实现方式
查看>>
java入门第二季--封装--什么是java中的封装
查看>>
【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
查看>>
4. Python3源码—字符串(bytes)对象
查看>>
Spark集群概览
查看>>
一份关于数据科学家应该具备的技能清单
查看>>
机器学习实战_一个完整的程序(一)
查看>>
Web框架的常用架构模式(JavaScript语言)
查看>>
如何用UPA优化性能?先读懂这份报告!
查看>>
刚开发好的联网“飞机大战”,demo开放,随便玩
查看>>
该放弃正在堕落的“RNN和LSTM”了
查看>>
Spring Boot 教程(四): Spring Boot 整合 thymeleaf MyBatis,展示用户信息
查看>>
node.js学习之npm 入门 ——2.《下载和管理npm》
查看>>