1117 AlvinZH's Fight with DDLs I

思路

简单题,动态规划。

本题与期末练习赛B题很相似,而且更为简单些。简化问题:在数字序列上取数,不能取相邻的数。

DP数组定义,dp[i]:到达第i层所能取得的最大经验值。初始化:dp[0] = x[0], dp[1] = max(x[0], x[1])。

对于第 \(i\) 层,有两种选择:不打,等于 \(dp[i-1]\);打,等于 \(dp[i-2] + x[i]\)。二者取最大值即可。

状态转移方程:\(dp[i] = max(dp[i-1], dp[i - 2] + x[i])\)

分析

时间复杂度:O(n)。

空间复杂度:O(n)。

优化:在dp求解过程中,发现只用到了dp[i-1]与dp[i-2]的值,可以使用三个变量实现dp过程。

参考代码

/*
Author: 朱辉(35)
Result: AC Submission_id: 514878
Created at: Mon Dec 25 2017 21:09:06 GMT+0800 (CST)
Problem: 1117 Time: 29 Memory: 3868
*/ #include <cstdio>
#include <iostream>
using namespace std; int n;
int x[100005];
long long dp[100005]; int main()
{
while(~scanf("%d", &n))
{
for (int i = 0; i < n; ++i)
scanf("%d", &x[i]); if(n == 1)
{
printf("%d\n", x[0]);
continue;
} dp[0] = x[0];
dp[1] = max(x[0], x[1]);
for (int i = 2; i < n; ++i)
dp[i] = max(dp[i-1], dp[i-2]+x[i]); printf("%lld\n", dp[n-1]);
}
}

2016级算法期末上机-D.简单·AlvinZH's Fight with DDLs I的更多相关文章

  1. 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III

    1119 AlvinZH's Fight with DDLs III 思路 难题,最小点覆盖. 分析题意,某一个任务,既可以在笔记本A的 \(a\) 模式下完成,也可以在笔记本B的 \(b\) 模式下 ...

  2. 2016级算法期末上机-F.中等·AlvinZH's Fight with DDLs II

    1118 AlvinZH's Fight with DDLs II 思路 中等题,贪心. 理解题意,每次攻击中,可以使某个敌人生命值-1,自己生命值减去∑存活敌人总攻击力. 贪心思想,血量少攻击高的要 ...

  3. 2016级算法期末上机-C.简单·Bamboo's Fight with DDLs III

    简单·Bamboo's Fight with DDLs III 分析 一句话:贪心,简单哈夫曼应用,要求的其实是所有结点的值与权值的乘积之和,也就是带权路径长. 可以理解为非叶子节点的权值的和,这里的 ...

  4. 2016级算法期末上机-A.简单·Bamboo's Fight with DDLs I

    简单·Bamboo's Fight with DDLs I 分析 一句话:要装满的完全背包问题. 对比完全背包只有一点要改变:初始化为负无穷 传送门: https://buaacoding.cn/pr ...

  5. 2016级算法期末上机-B.简单·ModricWang's Fight with DDLs I

    1124 ModricWang's Fight with DDLs I 思路 这道题本质上就是一个多项式求值,题目中的n需要手动算一下,单位复根可以根据复数的性质来求,即\(e^{i\pi}+1=0\ ...

  6. 2016级算法期末上机-I.难题·ModricWang's Fight with DDLs III

    1126 ModricWang's Fight with DDLs III 思路 由于题目中已经说明了时间经过了正无穷,因此初始位置是不重要的,并且每条边.每个点的地位是均等的.因此到达每个点的概率就 ...

  7. 2016级算法期末上机-G.中等·Bamboo's Fight with DDLs II

    中等·Bamboo's Fight with DDLs II 分析 一句话:给定字符串,求最长回文子序列长度,动态规划LCS思想的进阶应用 具体思路如下: 对于任意字符串,如果头尾字符相同,那么字符串 ...

  8. 2016级算法期末上机-E.中等·ModricWang's Fight with DDLs II

    1125 ModricWang's Fight with DDLs II 思路 圆内被划分部分数的计算方式如下: 圆内部的每一个交点都使得总份数增加了一:除此之外,每一根直线段最后抵达圆周时,总份数也 ...

  9. 2016级算法期末模拟练习赛-F.AlvinZH的青春记忆IV

    1086 AlvinZH的青春记忆IV 思路 难题,动态规划. 这是一道很有意思的题,因为它不仅卡了时间,也卡了空间,而且卡的很妙很迷. 光是理解题意已经有点难度,简化题意:两串数字序列,相等的数字定 ...

随机推荐

  1. 【转】字符串匹配的KMP算法:移动位数 = 已匹配 - 部分匹配值(共有长度)

    计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算 ...

  2. 27-python 画图

    绝佳教程:http://pyecharts.org/#/zh-cn/prepare?id=%E4%BD%BF%E7%94%A8%E4%B8%BB%E9%A2%98安装 pyecharts pip in ...

  3. java关于split分割字符串,空的字符串不能得到的问题

    java关于split分割字符串,空的字符串不能得到的问题   class T { public static void main(String args[]) { String num[] = ne ...

  4. Basic4android v3.50 发布

    这次发布的主要是debug 的增强.说实话,在这一方面B4a 比delphi做的要好.希望delphi 在新的版本里面 能进一步加强. I'm happy to release Basic4andro ...

  5. web应用安全权威指南(文摘)

    第1章 什么是web应用的安全隐患 第3章 Web安全基础,HTTP,会话管理,同源策略 content_length 字节数 content_type mime类型 百分号编码 referer :请 ...

  6. java类加载器的一些测试

    package classloader; import java.lang.reflect.Method; import org.junit.Test; import com.example.Samp ...

  7. C++中函数模版与类模版

    1.什么是模板? (1)可以这样来解释这个问题,例如当我们需要定义多个函数,而这个函数功能其实都是一样的,例如两个数相加的函数, 只是相加的两个数的类型不相同而已,这就导致我们需要定义多个函数:当我们 ...

  8. Linux的系统引导

    启动引导: 1.主机加电自检,加载BIOS信息 2.读取MBR的引导文件[grub lilo] 3.引导linux内核 4.运行第一个进程init pid=1 5.进入相应的运行级别[0-6] 6.运 ...

  9. python使用git进行版本控制1

    首先,选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit pwd命令用于显示当前目录. 如果 ...

  10. VS2010下连接Oracle数据库的方法

    在vs2010下使用OleDB连接Oracle数据库 ——此方法不需要配置数据源. 1. 在“服务器资源管理器”中,选择“数据库连接”,右击,选择“添加连接”. 2. 出现下面的界面,并按图中选择“用 ...