博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[USACO09MAR]Look Up
阅读量:4925 次
发布时间:2019-06-11

本文共 1407 字,大约阅读时间需要 4 分钟。

 

题面说的有点问题,应该是向后看齐。

 

于是我们维护一个单调递减栈,如果当前a[i]比栈顶元素大,就执行pop操作,然后把pop出来的元素的答案都用 i 更新即可。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 using namespace std;12 #define enter puts("") 13 #define space putchar(' ')14 #define Mem(a) memset(a, 0, sizeof(a))15 typedef long long ll;16 typedef double db;17 const int INF = 0x3f3f3f3f;18 const db eps = 1e-8;19 const int maxn = 1e5 + 5;20 inline ll read()21 {22 ll ans = 0;23 char ch = getchar(), last = ' ';24 while(!isdigit(ch)) {last = ch; ch = getchar();}25 while(isdigit(ch)) {ans = ans * 10 + ch - '0'; ch = getchar();}26 if(last == '-') ans = -ans;27 return ans;28 }29 inline void write(ll x)30 {31 if(x < 0) x = -x, putchar('-');32 if(x >= 10) write(x / 10);33 putchar(x % 10 + '0');34 }35 36 int n, a[maxn];37 #define pr pair
38 #define mp make_pair39 stack
st;40 int ans[maxn];41 42 int main()43 {44 n = read();45 for(int i = 1; i <= n; ++i) a[i] = read();46 for(int i = 1; i <= n; ++i)47 {48 while(!st.empty() && st.top().first < a[i])49 {50 pr node = st.top(); st.pop();51 ans[node.second] = i;52 }53 st.push(mp(a[i], i));54 }55 for(int i = 1; i <= n; ++i) write(ans[i]), enter;56 return 0;57 }
View Code

 

转载于:https://www.cnblogs.com/mrclr/p/9569245.html

你可能感兴趣的文章
【json的使用】
查看>>
ural 1519 Formula 1(插头dp)
查看>>
序列化和反序列化
查看>>
Web服务器Nginx多方位优化策略
查看>>
作业六:三层神经网络调参
查看>>
Java中的hashcode方法
查看>>
OpenCV学习 7:图像形态学:腐蚀、膨胀
查看>>
软件需求与分析课堂讨论一
查看>>
js添加var和不加var区别
查看>>
时钟程序
查看>>
无法识别的配置节log4net的(Unrecognized configuration section log4net)
查看>>
个人项目-小学四则运算 “软件”之初版
查看>>
cocos2d-html5学习笔记——创建持续性动作
查看>>
软件工程心得体会
查看>>
typedef typedef struct的使用
查看>>
Log4Net各参数API
查看>>
接收发送给服务器的Post请求
查看>>
asp.net客户端IP跟踪
查看>>
前端jquery validate表单验证框架的使用
查看>>
HDU 2602 Bone Collector (01背包)
查看>>