candy(动态规划)
题目描述
There are N children standing in a line. Each child is
assigned a rating value.
You are giving candies to these children subjected to the following
requirements:
- Each child must have at least one candy.
- Children with a higher rating get more candies than their
neighbors.
What is the minimum candies you must give?
题意:n 个小孩,每个小孩有一个评分。给小孩发糖。要求:
1)每个小孩至少一颗糖
2)评分高的小孩发的糖比他旁边两个小孩的多
因此最少需要多少糖果才够分?
解题思路:
遍历两边,首先每个人得一块糖,第一遍从左到右,若当前点比前一个点高就比前者多一块。
这样保证了在一个方向上满足了要求。第二遍从右往左,若左右两点,左侧高于右侧,但
左侧的糖果数不多于右侧,则左侧糖果数等于右侧糖果数+1,这就保证了另一个方向上满足要求。
最后将各个位置的糖果数累加起来就可以了。
代码实现:
class Solution {
public:
int candy(vector<int> &ratings) {
int n=ratings.size();
//candy set
vector<int>Candy(n,);
//from left to right
for(int i();i<n-;i++){
if(ratings[i+]>ratings[i])
Candy[i+]=Candy[i]+;
}
//from right to left
for(int j=n-;j>;j--){
if(ratings[j-]>ratings[j]&&Candy[j-]<=Candy[j])
Candy[j-]=Candy[j]+;
}
//add all
int sum();
for(auto a:Candy)
sum+=a;
return sum;
}
};
candy(动态规划)的更多相关文章
- candy——动态规划
There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...
- Leetcode 动态规划 Candy
本文senlie原版的,转载请保留此地址:http://blog.csdn.net/zhengsenlie Candy Total Accepted: 16494 Total Submissions: ...
- HLOJ1366 Candy Box 动态规划(0-1背包改)
题目描述: 给出N个盒子(N<=100),每个盒子有一定数量的糖果(每个盒子的糖果数<=100),现在有q次查询,每次查询给出两个数k,m,问的是,如果从N个盒子中最多打开k个盒子(意思是 ...
- HDU 5291 Candy Distribution
Candy Distribution Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- 【leetcode-135,62,63 动态规划】分发糖果 ,不同路径
分发糖果 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩 ...
- 增强学习(三)----- MDP的动态规划解法
上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...
- 简单动态规划-LeetCode198
题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...
- [LeetCode] Candy 分糖果问题
There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...
- 动态规划 Dynamic Programming
March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...
随机推荐
- 使用 vi 命令
一.vi是什么 vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器. Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实 ...
- javascript学习(3)循环和判断
continue:: break:: 一.for循环 1.for(i=1;i<6;i++)循环 2.for(x in jsonObject)循环 二.while循环 1.while循环 2.do ...
- 新概念英语(1-17)How do you do ?
Is there a problem wtih the Customers officer? What are Michael Baker and Jeremy Short's jobs? A:Com ...
- 新概念英语(1-a)句子集锦
- OAuth2.0学习(1-2)OAuth2.0的一个企业级应用场景 - 新浪开放平台微博OAuth2.0认证
http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5 开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,然后我们根据应用场景各自 ...
- mysql的账户管理
mysql中账户管理:1 查看所有用户: 所有用户及权限信息都存储在mysql数据库中的user表中 查看user表的结构 desc user\G; 主要字段: host: 表示允许访问的主机 use ...
- Python之编码
一.Python2与Python3的区别 1.从宏观上考虑,Python2重复代码太多,错误率高,不够规范.Python崇尚的是语言简洁.优美.清晰.Python3更加规范,重复代码少: 2.Pyth ...
- Extensions in UWP Community Toolkit - ViewExtensions
概述 UWP Community Toolkit Extensions 中有一个为 View 提供的扩展 - View Extensions,本篇我们结合代码详细讲解 View Extensions ...
- POJ-1328 Radar Installation--区间选点问题(贪心)
题目链接: https://vjudge.net/problem/POJ-1328 题目大意: 假设陆地的海岸线是一条无限延长的直线,海岛是一个个的点,现需要在海岸线上安装雷达,使整个雷达系统能够覆盖 ...
- C++_进阶之函数模板_类模板
C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...