2016级算法期末模拟练习赛-B.AlvinZH的青春记忆I
1083 AlvinZH的青春记忆I
思路
中等题,动态规划。
简化题意,一个环上取数,数不可相邻,取取得数之和最大值。
环不好表示,可以解开变成一列数,那么答案应为下列两种情况较大者。
①:取第一个点,可取得最大价值为宝物[1,n-1]的最大价值。
②:不取第一个点,可取得最大价值为宝物[2,n]的最大价值。
动态规划,状态转移方程:\(dp[i] = max(dp[i-1], dp[i - 2] + V[i])\)
分析
时间复杂度:\(O(n)\)。
参考代码
//
// Created by AlvinZH on 2017/12/4.
// Copyright (c) AlvinZH. All rights reserved.
//
#include <cstdio>
#include <iostream>
#define max(a, b) a > b ? a : b
using namespace std;
int n;
int V[100005];
/*
int dp[100005];
int maxValue(int left, int right)
{
dp[left] = V[left];
dp[left+1] = max(V[left], V[left+1]);
for(int i = left+2; i <= right; i++)
dp[i] = max(dp[i-1], dp[i - 2] + V[i]);
return dp[right];
}
*/
//优化代码
int maxValue(int left, int right)
{
int LastTwo = 0, LastOne = 0;
for(int i = left; i <= right; i++)
{
int temp = LastOne;
LastOne = max(LastOne, LastTwo + V[i]);
LastTwo = temp;
}
return LastOne;
}
int main()
{
while(~scanf("%d", &n))
{
for(int i = 1; i <= n; i++)
scanf("%d", &V[i]);
if(n == 1) printf("%d\n", V[1]);
else printf("%d\n", max(maxValue(1, n-1), maxValue(2, n)));
}
}
2016级算法期末模拟练习赛-B.AlvinZH的青春记忆I的更多相关文章
- 2016级算法期末模拟练习赛-E.AlvinZH的青春记忆III
1083 AlvinZH的青春记忆III 思路 难题,二分图. 说这是一个考察二分图的题目,你可以会说"不可能",这哪里像一个二分图了!这真的是一个二分图,考察的是最小顶点覆盖. ...
- 2016级算法期末模拟练习赛-F.AlvinZH的青春记忆IV
1086 AlvinZH的青春记忆IV 思路 难题,动态规划. 这是一道很有意思的题,因为它不仅卡了时间,也卡了空间,而且卡的很妙很迷. 光是理解题意已经有点难度,简化题意:两串数字序列,相等的数字定 ...
- 2016级算法期末模拟练习赛-C.AlvinZH的青春记忆II
1084 AlvinZH的青春记忆II 思路 中等题,二分. 简化题意,一列数字,每秒会自动-1,特殊操作可以使一个数在1s内-k,问这些数都减至0需要多久. 答案肯定在[1,xMax]之间,采用二分 ...
- 2016级算法期末模拟练习赛-D.AlvinZH的序列问题
1111 AlvinZH的序列问题 思路 中等题,动态规划. 简化题意,. 坑点一:二维int数组MLE,明显会超过内存限制,由于\(n\)最大为1e4,那么我们的dp数组最大也是1e4,考虑使用sh ...
- 2016级算法期末模拟练习赛-A.wuli51和京导的毕业旅行
1063 wuli51和京导的毕业旅行 思路 中等题,二分+贪心. 简化题意,将m+1个数字分成n份,ans为这n段中每段数字和的最大值,求ans最小值及其方案. 对于这种求最小的最大值,最常用的方法 ...
- 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III
1119 AlvinZH's Fight with DDLs III 思路 难题,最小点覆盖. 分析题意,某一个任务,既可以在笔记本A的 \(a\) 模式下完成,也可以在笔记本B的 \(b\) 模式下 ...
- 2016级算法期末上机-D.简单·AlvinZH's Fight with DDLs I
1117 AlvinZH's Fight with DDLs I 思路 简单题,动态规划. 本题与期末练习赛B题很相似,而且更为简单些.简化问题:在数字序列上取数,不能取相邻的数. DP数组定义,dp ...
- 2016级算法期末上机-F.中等·AlvinZH's Fight with DDLs II
1118 AlvinZH's Fight with DDLs II 思路 中等题,贪心. 理解题意,每次攻击中,可以使某个敌人生命值-1,自己生命值减去∑存活敌人总攻击力. 贪心思想,血量少攻击高的要 ...
- 2016级算法第二次上机-E.AlvinZH的儿时梦想——运动员篇
862-AlvinZH的儿时梦想--运动员篇 思路 难题. 应该想到,不管给出的数据如何,每一个淘汰的人不会对最终答案产生任何影响,所以每次淘汰就把人除掉就可以了,最后剩下的两个人计算它们从开始到相遇 ...
随机推荐
- 读写大“二进制”文件,不必申请很大内存(fopen,fread,fwrite,fclose)
<?php /** * 读写大二进制文件,不必申请很大内存 * 只有读取到内容才创建文件 * 保证目录可写 * * @param string $srcPath 源文件路径 * @param s ...
- java 内存 线程 类 vm分析工具
JMeter.Jconsole.JVMStat
- SOA和微服务到底是什么关系?
SOA和微服务到底是什么关系? 说实话,我确实不明白SOA和微服务到底有什么本质上的区别,两者说到底都是对外提供接口的一种架构设计方式.我倒觉得微服务其实就是随着互联网的发展,复杂的平台.业务的出现, ...
- ZOJ2748 Free Kick 2017-04-18 20:40 40人阅读 评论(0) 收藏
Free Kick Time Limit: 2 Seconds Memory Limit: 65536 KB In a soccer game, a direct free kick is ...
- 四则运算生成器(java) 蔡苑菲,陆海燕
github地址:https://github.com/Nancy0611/Myapp.git 一.项目相关要求 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 将生成10个 ...
- 查看WEB ADI所对应的包过程函数
SELECT BNEINTERFACESBEO.APPLICATION_ID , BNEINTERFACESBEO.INTERFACE_CODE , BNEINTERFACES ...
- 关于如何参与到开源项目中《How To Succeed In Open Source ( In Ways You Haven't Considered Yet )》
转自:http://gaslight.co/blog/how-to-succeed-in-open-source-in-ways-you-havent-considered-yet It’s Easy ...
- PostgreSQL操作数据表
1.创建表(SysUser) create table "SysUsers"( "UserId" serial, --用户Id,自增 "LoginNa ...
- C# Winform WPF DeskBand 窗体嵌入任务栏,在任务栏显示文字
最近写了个小程序,用于将固态硬盘的写入量等信息显示在任务栏,最开始使用Windows API也可以实现,但是当任务栏托盘增加的时候,会被遮盖,最终采用了DeskBand来实现,填了很多坑. 参考的Gi ...
- html Canvas 画图 能够选择并能移动
canvas 画图,能够选中所画的图片并且能够随意移动图片 <html xmlns="http://www.w3.org/1999/xhtml"> <head r ...