积木积水
来源:互联网 发布:sql in exists 效率 编辑:程序博客网 时间:2024/05/17 05:05
http://gdutcode.sinaapp.com/problem.php?cid=1031&pid=4
找到最长的那个柱子,在水满的情况下,从前往后,在它左边水面是非递减的,右边是非递增的(如果从最后一个柱子往中看也是非递减的)
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <stack>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;#define REP(i,k,n) for(int i=k;i<n;i++)#define REPP(i,k,n) for(int i=k;i<=n;i++)#define scan(d) scanf("%d",&d)#define scann(n,m) scanf("%d%d",&n,&m)#define mst(a,k) memset(a,k,sizeof(a));#define LL long long#define maxn 1000005#define mod 100000007int a[maxn];int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n,t; scan(t); while(t--) { scan(n); int maxc=-1,idx; REP(i,0,n) { scan(a[i]); if(a[i]>maxc) { maxc=a[i]; idx=i; } } LL sum=0; int last=a[0];//last表示当前最长的柱子 REP(i,1,idx) { if(a[i]<=last)//如果比它短就加上 sum+=(last-a[i]); else //否则更新last last=a[i]; } last=a[n-1]; for(int i=n-1;i>idx;i--) { if(a[i]<=last) sum+=(last-a[i]); else last=a[i]; } printf("%lld\n",sum); } return 0;}
0 0
- 积木积水
- GDUT 积木积水(栈)
- gdutProblem E: 积木积水
- GDUT 积木积水 2*n 时间复杂度
- 广东工业大学2016校赛 Problem E: 积木积水
- 广东工业大学2016校赛----积木积水【模拟】
- 广工校赛决赛Problem E: 积木积水
- 补题 Problem E: 积木积水 分治算法
- 广东工业大学2016校赛决赛重现——E积木积水(方法据说很多)
- 积木积水(广东工业大学校赛决赛2016E题)
- 积木
- 积木
- 积木
- 积木
- 土地积水
- 土地积水
- 积水问题
- 点点滴滴,积水成海
- (重要)三种自定义控件:自绘控件、组合控件、继承控件
- 携手video和flash说拜拜
- android:ToolBar详解(手把手教程)
- poj1087(最大流)
- (6)Java设计模式-适配器模式(Adapter)
- 积木积水
- LeetCode上做题之体会(二)
- 集成学习2
- lightoj 1038 - Race to 1 Again 【概率dp】
- Jenkins的配置
- 九种求和方法
- 实现多台服务器SESSION跨域——php
- 【HDU1255】覆盖的面积【线段树】【矩形面积交】
- Docker安装