[POJ3250]头发糟糕的日子

来源:互联网 发布:端口鞍来书店买参考书 编辑:程序博客网 时间:2024/04/28 12:58

点击打开链接   

单调栈/队列

考虑每一头牛会被多少其他牛看到

暴力n^2

这样维护一个单调下降的序列 每次加入新元素时弹出元素

最后每次加一个栈顶的最大编号-1

然后统计答案就没了

n^2

#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<queue>#include<stack>using namespace std;int hei[80008];int n;int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&hei[i]);}int ans=0;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(hei[j]<hei[i]){ans++;}else break;}}printf("%d",ans);return 0;}
on

#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<queue>using namespace std;int hei[80008];int n;long long ans=0;int stack[80008];int top=0;inline int init(){int now=0;char c;bool flag=false;while(1){c=getchar();if(c>='0'&&c<='9'){now=now*10+c-'0';flag=true;}else if(flag)return now;}}int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&hei[i]);}for(int i=1;i<=n;i++){while(top>=1&&hei[i]>=stack[top])top--;stack[++top]=hei[i];ans+=top-1;}cout<<ans<<endl;return 0;}
这里留一个坑 还剩四道题


0 0