CodeForces - 940E Cashback (DP+思维模型)
总结:看到区间相关的题目,多往dp上想,关注向上取整,向下取整的贪心原理(可以减少复杂度呢)
#include<set>
#include<algorithm>
using namespace std;
const int maxn=1000006;
int a[maxn];
long long dp[maxn];
long long sum[maxn];
multiset<int>st;
int n,c;
scanf("%d%d",&n,&c);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
dp[i]=sum[i]=sum[i-1]+a[i];//初始化全都不删
}
for(int i=1;i<c;i++){
st.insert (a[i]);
}
for(int i=c;i<=n;++i){
st.insert (a[i]);
dp[i]=min(dp[i-1]+a[i],dp[i-c]+sum[i]-sum[i-c]-*st.begin ());
st.erase (st.find (a[i-c+1]));//不断维护长度为c的定区间的长度
}
printf("%lld\n",dp[n]);
}
CodeForces - 940E Cashback (DP+思维模型)相关推荐
- Codeforces 940E - Cashback
940E - Cashback 思路: dp+rmq 可以证明最后划分的区间可以由长度为1和长度为c的区间组成的,这样就可以用O(n)的dp求了,区间最小值随便拿什么维护都可以 状态:dp[i]表示到 ...
- [Codeforces 940E]Cashback(dp+set)
题目链接:http://codeforces.com/problemset/problem/940/E 思路:划分任意长度,每c长度区间可去除一个最小值,所以划分方法就是单独自己一个或者长度为c的区间 ...
- codeforces 940E Cashback 有趣的dp
题解 这么明显的一个dp,我怎么就没看出来呢?! 首先我们需要一些前提条件:任何划分出来的一个区间的长度不应该超过c. 如果这个区间长度大于c,那么设len=n∗c+klen=n∗c+klen=n*c ...
- codeforces 940E. Cashback(线性dp)
传送门 题意:给出一个nnn个数的序列,要求将序列分成若干段,对于一段长度为kkk的自动删去最小的⌊kc⌋\left \lfloor \frac{k}{c} \right \rfloor⌊ck⌋个数 ...
- Codeforces 940E: Cashback 单调队列优化DP
传送门 题目描述 给你一个长度为n的数列a和整数c 你需要把它任意分段 每一段假设长度为k,就去掉前 ⌊kc⌋\lfloor\frac{k}{c}\rfloor⌊ck⌋小的数 最小化剩下的数的和 分 ...
- Codeforces 940E Cashback
Cashback 题意:一共给你N个数, 然后将他们分成连续的子集, 每个集合可以删除 元素个数/c 个最小元素, 然后求每个集合删除元素后的总和. 题解:我们将集合分为1个元素或者K个元素,每K个 ...
- [Codeforces 940E]Cashback
Description 题库链接 给你两个整数 \(n,c\) ,以及一个数列 \(A\) ,让你将序列分为许多段.对于每一段,他的价值为序列内除了最小的 \(\left\lfloor\frac{le ...
- Cashback [CodeForces - 940E]
http://codeforces.com/problemset/problem/940/E 题意 将数组a划分成若干段,使每段的f值之和最小,其中f值是区间内元素和减去前k/c(下取整)小的数. 分 ...
- CF 940E Cashback (DP+multiset)
题目链接:http://codeforces.com/problemset/problem/940/E 题意:给一个长度为n的序列a,将它任意分成几个连续子序列,对于一个长度为K的子序列,可以删掉它前 ...
最新文章
- mysql复制模式第四部分-----环形复制
- Entity Framework中的Migrations
- ICS SIP Call移植
- 社交中的黄金法则,你要细细体会品味
- java rmi 使用管道_使用Java RMI时要记住的两件事
- 微服务化后缓存怎么做?
- js中常用的日期处理函数
- python flask实战视频_Python Flask打造一个视频网站实战视频教程
- 2013二级计算机c语言50,2013年计算机二级C语言课后模拟题五及答案
- 50岁开始学python_再过两年C语言就50岁了,这么老的编程语言怎么还没有过时?...
- 使用kNN算法实现简单的手写文字识别
- 融合迁移学习与文本增强的中文成语隐喻知识识别与关联研究
- 33c3 CTF web WriteUp
- Clarke Wight saving algorithm求解tsp问题
- 义隆EM78P153K DIP14单片机 MCU
- Cartesian convention笛卡尔公约
- 什么是知识图谱?通俗易懂
- zk-snark之R1CS-QAP
- JVM生态系统2018调查报道
- PHP 多任务秒级定时器的实现方法
热门文章
- COMP252, Winter 2022. Jan 13, 2022. Due Jan 20, 2022, 4pm.
- 【Pytorch】Cycle GAN实战(一):风格转换--真实风景图像转换为VanGogh风格
- python调用海康威视工业相机SDK实现图片采集
- 解析「Web3悖论」的内在机理与突破路径
- python random.randint()函数介绍
- Bug 生命周期 中的 各个状态!
- 强国杯半决赛东部赛区部分wp
- DNS的作用及解析流程
- 电子学会2023年3月青少年软件编程(图形化)等级考试试卷(一级)真题,含答案解析
- .scss和.css的区别,css - SCSS和Sass有什么区别?