100136. 冒泡的胖头鱼Out of Sorts
Posted gmh77
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了100136. 冒泡的胖头鱼Out of Sorts相关的知识,希望对你有一定的参考价值。
100136
题解
分界线i的产生当且仅当右边属于左边的全部移过去,等价于右边要移的最大的数前要移到右边的数个数,等于最大位置-i,设为c[i]
然后一个数算的次数=max(c[i-1],c[i]),0要当做1来算
不需要用栈
code
#include <bits/stdc++.h>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b)
#define ll long long
using namespace std;
struct type{int x,id;} b[100001];
int a[100001],c[100001],D[100001],d[100002][2],n,i,j,k,l,t;
ll ans;
bool cmp(type a,type b) {return a.x<b.x || a.x==b.x && a.id<b.id;}
int main()
{
scanf("%d",&n);
fo(i,1,n) scanf("%d",&a[i]),b[i]={a[i],i};
sort(b+1,b+n+1,cmp);
fo(i,1,n) a[b[i].id]=i;
fo(i,1,n) D[a[i]]=i;
l=0;
fo(i,1,n-1)
l=max(l,D[i]),c[i]=max(l-i,1);
c[0]=c[n]=1;
fo(i,1,n) ans+=max(c[i-1],c[i]);
printf("%lld
",ans);
fclose(stdin);
fclose(stdout);
return 0;
}
以上是关于100136. 冒泡的胖头鱼Out of Sorts的主要内容,如果未能解决你的问题,请参考以下文章
Mysql提示:Out of sort memory, consider increasing server sort buffer size
Mysql提示:Out of sort memory, consider increasing server sort buffer size