博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs3327选择数字(单调队列优化)
阅读量:4993 次
发布时间:2019-06-12

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

3327 选择数字

 

 时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 钻石 Diamond
 
 
题目描述 
Description

给定一行n个非负整数a[1]..a[n]。现在你可以选择其中若干个数,但不能有超过k个连续的数字被选择。你的任务是使得选出的数字的和最大。

 

输入描述 
Input Description

第一行两个整数n,k

以下n行,每行一个整数表示a[i]。

输出描述 
Output Description

输出一个值表示答案。

样例输入 
Sample Input

5 2

1

2

3

4

样例输出 
Sample Output

12

数据范围及提示 
Data Size & Hint

对于20%的数据,n <= 10

对于另外20%的数据, k = 1

对于60%的数据,n <= 1000

对于100%的数据,1 <= n <= 100000,1 <= k <= n,

                  0 <= 数字大小 <= 1,000,000,000

 

90分代码(其实数据弱,能A的,只是我太弱2333):

 

/* f[i]表示前i个数选k个的最大值因为不能连续k个选,所以枚举一下断点 但这个题貌似是个单调队列优化......嗯,,,那就学吧先上个暴力dp */ #include
#include
#define maxn 10000001using namespace std;int n,m,k;int f[maxn],s[maxn],a[maxn];int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); s[i]=s[i-1]+a[i]; } for(int i=1;i
心若向阳,无谓悲伤

 

单调队列优化:

/* 考虑从第一位开始递推处理 在第i位的时候,需要在i-k位(取i-k+1到i)到i(不取i)中找一个点不取 设这个点为j,这一段连续的就是j+1到i 那么f[i] = max{f[j-1] + sum[j+1, i]} (i-k<=j<=i) 运用前缀和简化一下就是f[i] = max{f[j-1]-sum[j]+sum[i]}+f[i]; 发现max里面的值只与j有关,所以可以用单调队列优化转移。*/ #include
#include
#define LL long long#define maxn 100010using namespace std;LL n,k,a[maxn],s[maxn],f[maxn];LL head,tail=1,d[maxn],q[maxn];LL que(LL j){ d[j]=f[j-1]-s[j]; while(head<=tail&&d[q[tail]]
心若向阳,无言悲伤

 

 

转载于:https://www.cnblogs.com/L-Memory/p/6354390.html

你可能感兴趣的文章
信息社会
查看>>
Mysql存储引擎概念特点介绍及不同业务场景选用依据
查看>>
关于Java类Calendar做统计时 获取日期的一些常见操作
查看>>
从程序员转向淘宝店主的探索
查看>>
openstack 中国联盟公开课參会总结
查看>>
约瑟夫环问题详解 (c++)
查看>>
Ubuntu 配置VNC以及使用VNC连接时,无法显示系统菜单栏,解决方法
查看>>
BZOJ.3990.[SDOI2015]排序(DFS)
查看>>
hdu 1358
查看>>
“-fembed-bitcode is not supported on versions of iOS prior to 6.0” 错误
查看>>
[转]jquery mobile中redirect重定向问题
查看>>
[django]表格的添加与删除实例(可以借鉴参考)
查看>>
Mockito一个采用Java编写用于单元测试的Mocking框架
查看>>
把elipse非maven的Struts2+Spring+Ibatis项目导入Idea中
查看>>
SVGImageView
查看>>
Android UI 优化 使用<include/>和 <merge />标签
查看>>
linux命令--使用fsck修复文件系统
查看>>
洛谷 P2324 [SCOI2005]骑士精神
查看>>
leetcode(64)最小路径和
查看>>
Select文字居右显示
查看>>