天天有训练赛,还有两个将近20道题的题单,还有一些零零散散codeforces,牛客,Atcoder,的比赛,太多了。。。。还要补题,我感觉有点力不从心,想要完成任务,质量上就没达标,想要质量,很多东西就完不成,第一天早上打了训练赛,下午一直在补提,补到下午3/4点左右,看他们在完成题单了,索性每天下午都写题单,晚上有时候会打打别的比赛比如睿抗,cf,abc.....;最后一天周日补题,也补不了很多,一直找与标准答案的细节,想思路,想不出来看题解还要理解思路,
太多题要补了,根本补不完,
二分一整个题单只做了二分的部分,三分,01规划都还没有接触,令一个题单坐的差不多了,
很多题都很经典,学习了一个新名词:“单调栈”,解法都挺神奇的
Q-小A的柱状图_2021秋季算法入门班第四章习题:堆栈队列单调栈等(重现赛)@IR101 (nowcoder.com)
#include<bits/stdc++.h>
using namespace std;
stack<int>s;
#define int long long
int a[10000006],ans,h[10000006],sum[10000006];
signed main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
for(int j=1;j<=n;j++){
cin>>h[j];
}
s.push(0);
for(int i=1;i<=n;i++){
while(h[s.top()]>=h[i]){
int H=h[s.top()];
s.pop();
int pp=(sum[i-1]-sum[s.top()])*H;
ans=max(ans,pp);
}
s.push(i);
}
while(s.size()>1){
int o=h[s.top()];
s.pop();
ans=max(ans,(sum[n]-sum[s.top()])*o);
}
cout<<ans<<endl;
return 0;
}
不仅有单调栈,还有单调队列,注意!:必须每个元素都得入栈。。
题单的其他题目好像就是stl的不同应用,感觉stl偏向模拟一点,
还有二分:题目求最值可以考虑使用二分;
这周就先这样吧,补题去了,bye..