Sequence(BZOJ-1345)
生活随笔
收集整理的這篇文章主要介紹了
Sequence(BZOJ-1345)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Problem Description
對(duì)于一個(gè)給定的序列a1,…,an,我們對(duì)它進(jìn)行一個(gè)操作reduce(i),該操作將數(shù)列中的元素ai和ai+1用一個(gè)元素max
(ai,ai+1)替代,這樣得到一個(gè)比原來序列短的新序列。這一操作的代價(jià)是max(ai,ai+1)。進(jìn)行n-1次該操作后,
可以得到一個(gè)長度為1的序列。我們的任務(wù)是計(jì)算代價(jià)最小的reduce操作步驟,將給定的序列變成長度為1的序列。
Input
第一行為一個(gè)整數(shù)n( 1 <= n <= 1,000,000 ),表示給定序列的長度。
接下來的n行,每行一個(gè)整數(shù)ai(0 <=ai<= 1, 000, 000, 000),為序列中的元素。
Output
只有一行,為一個(gè)整數(shù),即將序列變成一個(gè)元素的最小代價(jià)。
Sample Input
3
1
2
3
Sample Output
5
思路:貪心
對(duì)于 n 個(gè)數(shù),每次將相鄰的兩個(gè)數(shù),取他們的最大,依次類推,最后得到的一定是最小值
Source Program
#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<utility> #include<stack> #include<queue> #include<deque> #include<vector> #include<set> #include<map> #define PI acos(-1.0) #define E 1e-6 #define INF 0x3f3f3f3f #define N 2000001 #define LL long long const int MOD=998244353; const int dx[]={-1,1,0,0}; const int dy[]={0,0,-1,1}; using namespace std; LL a[N]; int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);LL res=0;for(int i=1;i<=n-1;i++)res+=max(a[i],a[i+1]);printf("%lld\n",res);return 0; }?
總結(jié)
以上是生活随笔為你收集整理的Sequence(BZOJ-1345)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 挑战NPC(洛谷-P4258)
- 下一篇: 计算几何 —— 二维几何基础