pat顶级1017 The Best Peak Shape (35 point(s))

2023-10-06 15:01
文章标签 顶级 1017 pat 35 best peak shape point

本文主要是介绍pat顶级1017 The Best Peak Shape (35 point(s)),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎访问我的pat顶级题解目录哦 https://blog.csdn.net/richenyunqi/article/details/86751676

题目描述

pat顶级1017 The Best Peak Shape (35 point(s))题目描述

算法设计

这是一道考察最长上升子序列问题(LIS) 的题目。定义数组A[n+1]存储整个序列;定义数组dpLeft[n+1],其中dpLeft[i]表示序列A[1]~A[i]中以A[i]结尾的不包含A[i]的最长上升子序列的长度;定义数组dpRight[n+1],其中dpRight[i]表示序列A[n]~A[i]中以A[i]结尾的不包含A[i]的最长上升子序列的长度。
那么对于A[i],存在以A[i]为中心的peak shape的条件为dpleft[i]>0&&dpRight[i]>0,整个peak shape的长度为dpleft[ans]+dpRight[ans]+1
关于dpLeftdpRight的求解大致相同,以dpLeft为例,其状态转移方程为 d p L e f t [ i ] = m a x { d p L e f t [ i ] , d p L e f t [ j ] + 1 ∣ j &lt; i , A [ j ] &lt; A [ i ] } dpLeft[i]=max\{dpLeft[i],dpLeft[j]+1|j&lt;i,A[j]&lt;A[i]\} dpLeft[i]=max{dpLeft[i],dpLeft[j]+1j<i,A[j]<A[i]}
具体实现可见代码。

C++代码

#include<bits/stdc++.h>
using namespace std;
int main(){int n,ans=0;//ans存储最终结果peak number的下标scanf("%d",&n);int A[n+1],dpleft[n+1]={0},dpRight[n+1]={0};//将dpleft、dpRight均初始化为0for(int i=1;i<=n;++i)scanf("%d",&A[i]);for(int i=1;i<=n;++i)//求解dpLeftfor(int j=1;j<i;++j)if(A[i]>A[j])dpleft[i]=max(dpleft[i],dpleft[j]+1);for(int i=n;i>=1;--i)//求解dpRightfor(int j=n;j>i;--j)if(A[i]>A[j])dpRight[i]=max(dpRight[i],dpRight[j]+1);for(int i=1;i<=n;++i)//求解ansif(dpleft[i]>0&&dpRight[i]>0&&(dpleft[i]+dpRight[i]>dpleft[ans]+dpRight[ans]||(dpleft[i]+dpRight[i]==dpleft[ans]+dpRight[ans]&&abs(dpleft[i]-dpRight[i])<abs(dpleft[ans]-dpRight[ans]))))ans=i;if(ans==0)puts("No peak shape");elseprintf("%d %d %d",dpleft[ans]+dpRight[ans]+1,ans,A[ans]);return 0;
}

这篇关于pat顶级1017 The Best Peak Shape (35 point(s))的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/153328

相关文章

ural 1017. Staircases DP

1017. Staircases Time limit: 1.0 second Memory limit: 64 MB One curious child has a set of  N little bricks (5 ≤  N ≤ 500). From these bricks he builds different staircases. Staircase consist

『功能项目』战士的平A特效【35】

我们打开上一篇34武器的切换实例的项目, 本章要做的事情是在战士的每次按A键时在指定位置生成一个平A特效 首先将之前下载的技能拖拽至场景中 完全解压缩后重命名为AEffect 拖拽至预制体文件夹 进入主角动画的战士动画层级 双击第一次攻击 选择Animation 创建事件 创建的动画事件帧放在攻击动画挥剑指定处 命名为PerpetualAtt

时间序列|change point detection

change point detection 被称为变点检测,其基本定义是在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点受系统性因素而非偶然因素影响发生变化,我们就称该时间点为变点。变点识别即利用统计量或统计方法或机器学习方法将该变点位置估计出来。 Change Point Detection的类型 online 指连续观察某一随机过程,监测到变点时停止检验,不运用到

NoSQL数据库的35个应用场景

现在我们站在各个用例的角度上来考虑那种系统适合于这些用例。   你的意见是?   首先,我们要纵览各种数据模型。这些模型的分类方法来自于Emil Eifrem和NoSQL databases。   文档数据库   源起:受Lotus Notes启发。   数据模型:包含了key-value的文档集合   例子:CouchDB, MongoDB   优点:数据模型自然,编

MACS bdgdiff: Differential peak detection based on paired four bedGraph files.

参考原文地址:[http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html](http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html) 文章目录 一、MACS bdgdiff 简介DESCRIPTION 二、用法

android xml之Drawable 篇 --------shape和selector和layer-list的

转自 : http://blog.csdn.net/brokge/article/details/9713041 <shape>和<selector>在Android UI设计中经常用到。比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape>和<selector>。 可以这样说,<shape>和<selector>在美化控件中的作用是至关重要。 在

印度再现超级大片,豪华阵容加顶级特效

最近,印度影坛再次掀起了风潮,一部名为《毗湿奴降临》的神话大片强势登陆各大影院,上映首周票房就飙升至105亿卢比,成功占据了票房榜首的位置。之后,这部电影也在北美上映,海外市场的表现同样不俗,收获了相当亮眼的票房成绩。作为一部印度神话科幻大片,《毗湿奴降临》不仅在本土大火,在国际市场上也引发了不小的关注。 《毗湿奴降临》由印度著名导演纳格·阿什温执导,卡司阵容极其豪华,集结了迪皮卡·帕度柯妮

Android shape 图形

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- "oval","rectangle", "line","ring" 形状--><!-- 圆角 --><cornersandroid

什么是顶级域名后缀?

在互联网发展的历程中,顶级域名(Top-Level Domain,简称TLD)扮演着至关重要的角色。而这些顶级域名的后缀,则更是成为了整个网络世界的分类标准和识别依据。 顶级域名后缀,通常指位于域名最右端的部分,如".com"、“.org”、".cn"等。它们为下层的二级域名和三级域名提供了一个基础的分类框架,让互联网上的各类网站、组织和个人能够根据自身特点选择合适的域名后缀。 不同类型的顶级

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边