bzoj1660:乱发节
2015-09-20 19:27
211 查看
一开始就陷入误区了,因为总是想着这头牛能看到几头牛这个点去考虑,然而那样的话基本都会爆的但是又想不出怎么优化,网上的题解。从另一方面考虑就好了,就是这一头牛能被多少头牛看到再加上栈的应用就ok了。
-------------------------------------------------------------------------------#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<deque>
#include<stack>
using namespace std;
#define ll long long
const int nmax=80005;
ll n,a[nmax];
stack<ll>q;
int main(){
scanf("%lld",&n);
for(ll i=1;i<=n;i++)
scanf("%lld",&a[i]);
q.push(a[1]);
ll ans=0,cur=1;
for(ll i=2;i<=n;i++){
if(a[i]>=q.top()){
while(!q.empty()&&a[i]>=q.top()){
q.pop();
cur--;
}
q.push(a[i]);
ans+=cur;
cur++;
}
else{
ans+=cur;
q.push(a[i]);
cur++;
}
}
printf("%lld\n",ans);
return 0;
}
-----------------------------------------------------------------------------------
相关文章推荐
- 计算机网络之局域网&以太网
- 网际协议IP
- Android中的onActivityResult和setResult方法的使用
- 杭电acm2317
- FastJSON使用心得——如何解析带中文或者数字key的数据
- OC字符串比较方法
- hibernate学习之table doesn't exists问题
- 灰盒测试
- Ubuntu - 硬盘分区、格式化、自动挂载配置 | Hard disk add new partition, format, auto mount in ubuntu
- POJ 1724 【存在附加约束的最短路问题】【优先队列】
- 静态测试和动态测试
- 思维方式决定成功(古人)
- yum
- iOS-常用技巧
- 配置resin服务
- ubuntu15.04 无线上网问题
- SQL server 2008数据库的备份与还原
- java计算器小程序
- hdu 1018 -Big Number(求n的阶乘的位数)
- 计算器