登山(信息学奥赛一本通-T1283)
生活随笔
收集整理的這篇文章主要介紹了
登山(信息学奥赛一本通-T1283)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【題目描述】
五一到了,ACM隊(duì)組織大家去登山觀光,隊(duì)員們發(fā)現(xiàn)山上一個(gè)有N個(gè)景點(diǎn),并且決定按照順序來瀏覽這些景點(diǎn),即每次所瀏覽景點(diǎn)的編號(hào)都要大于前一個(gè)瀏覽景點(diǎn)的編號(hào)。同時(shí)隊(duì)員們還有另一個(gè)登山習(xí)慣,就是不連續(xù)瀏覽海拔相同的兩個(gè)景點(diǎn),并且一旦開始下山,就不再向上走了。隊(duì)員們希望在滿足上面條件的同時(shí),盡可能多的瀏覽景點(diǎn),你能幫他們找出最多可能瀏覽的景點(diǎn)數(shù)么?
【輸入】
第一行:N (2 ≤ N ≤ 1000) 景點(diǎn)數(shù);
第二行:N個(gè)整數(shù),每個(gè)景點(diǎn)的海拔。
【輸出】
最多能瀏覽的景點(diǎn)數(shù)。
【輸入樣例】
8
186 186 150 200 160 130 197 220
【輸出樣例】
4
【源程序】
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 1001 #define MOD 2520 #define E 1e-12 using namespace std; int a[N],f[N],d[N]; int main() {int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++)if(a[j]<a[i]&&f[j]+1>f[i])f[i]=f[j]+1;}for(int i=n;i>=1;i--){d[i]=1;for(int j=n;j>i;j--)if(a[j]<a[i]&&d[j]+1>d[i])d[i]=d[j]+1;}int maxx=-INF;for(int i=1;i<=n;i++)maxx=max(maxx,f[i]+d[i]-1);cout<<maxx<<endl;return 0; }?
總結(jié)
以上是生活随笔為你收集整理的登山(信息学奥赛一本通-T1283)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暑期训练日志----2018.8.22
- 下一篇: LETTERS (信息学奥赛一本通-T1