首页 > 编程知识 正文

多项式的升降幂排列,joypolis8分钟密室

时间:2023-05-06 13:55:32 阅读:34516 作者:4350

acwing 1575 .最盛水的容器(主题地址) ) ) ) ) ) )。

算法1:(单调堆栈)。

# include bits/stdc.husingnamespacestd; const int N=1e6 5; typedef pairint,int PII; PII stk[N]; int tt=-1; /*1.I.遍历到I时,相对于I的左序列,寻找距离I远且大的数字才可能符合题意,所以对左区间进行维护; 2.n最大为10^5,暴力双循环TLE,维护I左区间时可根据空间改变时间; 3.I维护左区间时,开头确定不变的是从最初的数量开始维护。 维护后,由于第一个数一定不动它(离I最远,可能符合题意),所以只有一个入口,联想到用模拟堆栈进行维护。 4.stk中: jki时,stk[j]=stk[k]一定不成立。 这是因为stk[j]既没有远离I,也没有远离stk[k]以上。 因为如果是这样的话,右边的stk[k]就没有任何意义,计算最多能装多少水时完全不用考虑。 因此,在jki情况下,为jki cinn; int ans=1; for(intI=0; in; I ) { int x; cinx; for(intj=0; j=tt; j ) ans=max(ans,(i-stk[j].second ) min ) STK[j].first,x ) ); 遍历到//I时,计算可以加入多少水到if(STK[TT].firstx ).first=x,stk[tt].second=i )//进入堆栈返回0; (/) 9186254837输出样本: 49 )//18625837//1641516401849//833601//6:1//2:18//5:18//53:18

# include bits/stdc.husingnamespacestd; const int N=1e6 5; int a[N]; int main () { int n; cinn; for(intI=0; in; I ) cina[i]; int ans=1; int l=0,r=n-1; while(lr ) ) ans=max ) ans,(r-l ) min ) a[r],a[r] ); if(a ) l ) a ) r ) l; //更矮的移动else r--; } coutans; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。