4 条题解
-
9
这题用了单调栈的知识
#include <bits/stdc++.h> using namespace std; int n, num[80005]; long long sum; stack<int> st; int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> num[i];//输入 num[n + 1] = 1000000001; for (int i=1;i<=n+1;i++) { while (!st.empty() && num[st.top()]<=num[i])//当栈不为空且num[栈顶元素]<=num[i]时 { int top=st.top(); sum+=i-top-1; st.pop(); } st.push(i); } cout<<sum; return 0; }
-
4
#include<bits/stdc++.h> using namespace std; long long ans; int n,a[80005]; stack<int> st; int main() { cin>>n; for (int i=1;i<=n;i++) { cin>>a[i]; } a[n+1]=1000000005; for (int i=1;i<=n+1;i++) { while (!st.empty()&&a[st.top()]<=a[i]) { int x=st.top(); ans+=i-x-1; st.pop(); } st.push(i); } cout<<ans; return 0; }//已AC
-
2
#include<bits/stdc++.h> using namespace std; long long ans; int n,a[80007]; stack<int> st; int main() { cin>>n; for (int i=1;i<=n;i++) { cin>>a[i]; } a[n+1]=1000000007; for (int i=1;i<=n+1;i++) { while (!st.empty()&&a[st.top()]<=a[i])//这里注意不要写反(别问我怎么知道的) { int x=st.top(); ans+=i-x-1; st.pop(); } st.push(i); } cout<<ans; return 0; }
-
-7
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 1028
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 428
- 已通过
- 111
- 上传者