题目链接:http://codeforces.com/problemset/problem/940/E

题意:给一个长度为n的序列a,将它任意分成几个连续子序列,对于一个长度为K的子序列,可以删掉它前ceil(k/c)小的元素,对所有操作后的子序列里的各个元素求总和sum,问sum最小值为多少。

(1 ≤ n, c ≤ 100 000).       ai (1 ≤ ai ≤ 109)

思路:容易想到,两个长度为c的子序列减去的值肯定不会少于一个长度为2c的子序列,所以,我们可以遍历1-n的元素,对于每一个新来的元素,我们可以把它当做一个新的独立的区间,也可以让它和前面c-1个元素组成一个长度为c 的区间,DP两者取最小值即可,对于一个长度为c的区间,我们用一个multiset维护c个元素的最小值,multiset复杂度为nlogn。

下面是AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<set>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=1e5+10;
int n,k,m,c;
ll a[N];
ll dp[N];
multiset<ll>s;
int main()
{scanf("%d%d",&n,&c);for(int i=1; i<=n; i++)scanf("%I64d",&a[i]);ll sum=0;dp[0]=0;for(int i=1; i<=n; i++){sum+=a[i];s.insert(a[i]);dp[i]=dp[i-1]+a[i];if(i>c){s.erase(s.find(a[i-c]));sum-=a[i-c];}if(i>=c){dp[i]=min(dp[i],dp[i-c]+sum-*s.begin());}}printf("%I64d\n",dp[n]);
}

最后是关于multiset的erase:

一篇很详细的multiset博客:https://blog.csdn.net/sodacoco/article/details/84798621

CF 940E Cashback (DP+multiset)相关推荐

  1. [Codeforces 940E]Cashback(dp+set)

    题目链接:http://codeforces.com/problemset/problem/940/E 思路:划分任意长度,每c长度区间可去除一个最小值,所以划分方法就是单独自己一个或者长度为c的区间 ...

  2. CodeForces - 940E Cashback (DP+思维模型)

    题意:给你长度为n的数列,一段序列的价值是,所有数的总和-最小的len/c的数的和,求如何分割数列,使得答案总和最小. 分析:一开始看到向下取整不外乎两种情况:一是用计算机处理,那么表明用暴力,emm ...

  3. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  4. CodeForces - 1000D:Yet Another Problem On a Subsequence (DP+组合数)

    CodeForces - 1000D:Yet Another Problem On a Subsequence (DP+组合数) 题目大意:这题目啊,贼难理解- 定义一个数列是"好的&quo ...

  5. 蓝桥杯备考-刷题之路-动态规划算法(DP算法)Part1

    之前在刷力扣的时候就是浑浑噩噩的,照着评论区的答案写了一遍就万事大吉了,没有深度思考过.这次备考蓝桥杯看到DP算法的第一道题就不会,更难受的是看答案了依然完全不理解,所以决心把DP算法一次弄懂. 开始 ...

  6. Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维)

    Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维) time limit per tes ...

  7. H - 拦截导弹 OpenJ_Bailian - 2945(dp动态规划)

    某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭,并观 ...

  8. leetcode 1024. 视频拼接(dp/贪心)

    你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事.这些片段可能有所重叠,也可能长度不一. 视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 c ...

  9. LeetCode 161. 相隔为 1 的编辑距离(DP/遍历)

    文章目录 1. 题目 2. 解题 2.1 DP超时 2.2 一次遍历 1. 题目 给定两个字符串 s 和 t,判断他们的编辑距离是否为 1. 注意: 满足编辑距离等于 1 有三种可能的情形: 往 s ...

最新文章

  1. jquery-ajax请求:超时设置,增加 loading 提升体验
  2. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(设置异常值的形状、颜色)实战
  3. 注入游戏没有焦点_不戴眼镜看3D电影、玩3D游戏,这项技术能焕发端游市场第二春吗?...
  4. Spring+SpringMVC+MyBatis集成(SSM)
  5. JAVA知识总结目录
  6. 1024“代码急救室”活动来袭!机械键盘、背包等程序员装备等你来!
  7. (转) iPhone UI 开发的几点建议
  8. c语言程序设计编程解读,C语言程序设计第三次实验报告解读
  9. 在cygwin下编译c语言
  10. 程序员面试金典 - 面试题 03.06. 动物收容所(队列)
  11. 04.MyBatis别名的设置和类型转换器
  12. 中文版Cooledit2.1安装程序+插件
  13. 运用PS做图片快捷键
  14. 网络传输的七层协议(包括tcp协议和udp协议的区别)
  15. DaZeng:雪碧图(精灵图)的使用
  16. 1分钟了解 rap2
  17. 判断奇数还是偶数【c语言】
  18. codeforces gym 100827A Runes
  19. Mac电脑上如何关闭屏幕时间
  20. OPT机器视觉12月高峰论坛一览表

热门文章

  1. mysql自定义函数-随机生成人员姓名
  2. 快速视频Seeking(视频帧搜索)
  3. ssh 用户名密码登录
  4. 云计算的模型都有哪些
  5. 计算机网络自顶向下方法笔记01
  6. JSON转JS对象,JS对象转JSON
  7. Android 9.0 Pie(派),9.0适配
  8. 函数的length代表什么
  9. 基于数据挖掘的客户流失分析案例
  10. 项目三:声乐盒(音节+音乐)实验