博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
江哥的dp题a(codevs 4815)
阅读量:4613 次
发布时间:2019-06-09

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

题目描述 
Description

给出一个长度为N的序列A(A1,A2,A3,...,AN)。现选择K个互不相同的元素,要求: 1.两两元素互不相邻

2.元素值之和最大

输入描述 
Input Description

第一行两个正整数N,K。 接下来一行N个整数,描述A。

输出描述 
Output Description

输出一行一个整数,描述答案(最大和)。

样例输入 
Sample Input

样例1:

7 3

3 5 7 -1 9 10 7

样例2:

7 3

3 21 7 -1 9 20 7

 

样例输出 
Sample Output

样例1:

23

样例2:

40

数据范围及提示 
Data Size & Hint

测试点编号            数据范围 

1,2,3                      K≤N≤20 

4,5,6,7,8,9,10       K≤N≤1000

/*  比较水的DP  f[i][j][0/1]表示前i个数里取k个并且第i个取或不取的最大值,转移方程就比    较好想了,另外可以用滚动数组优化空间,鄙人比较懒,所以…… */#include
#include
#define ll long long#define M 1010using namespace std;ll f[M][M][2],a[M];int n,k;int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) for(int j=0;j<=min(k,(i+1)/2);j++)//注意这里循环到 min(k,(i+1)/2) { f[i][j][0]=max(f[i-1][j][1],f[i-1][j][0]); if(j)f[i][j][1]=f[i-1][j-1][0]+a[i]; } cout<
View Code

 

转载于:https://www.cnblogs.com/harden/p/5925416.html

你可能感兴趣的文章
NOIP模板复习(4)区间操作之莫队算法,树状数组,线段树
查看>>
深入理解PHP中的引用和赋值
查看>>
58同城2018提前批前端笔试题总结
查看>>
compilation与编译
查看>>
useradd mfs -s /sbin/nologin -M
查看>>
mysql数据库:数据类型、存储引擎、约束、
查看>>
LeetCode-Find the Celebrity
查看>>
LeetCode-Longest Increasing Subsequence
查看>>
LeetCode-Reverse Bits
查看>>
zynq如何查看当前网速
查看>>
vue+element-ui实现表格checkbox单选
查看>>
linux公司常用基础命令必知必会
查看>>
网站优化
查看>>
Java高级特性 第5节 序列化和、反射机制
查看>>
每天敲一点code
查看>>
jquery
查看>>
IntelliJ IDEA 中文乱码问题解决办法
查看>>
【文文殿下】网络流24题计划
查看>>
Coursera台大机器学习课程笔记6 -- The VC Dimension
查看>>
Ubuntu 16 04 安装KVM
查看>>