noi.ac#228 book

分析

代码

#include<bits/stdc++.h>using namespace std; #define int long longconst int inf =1e18; char s[1000100]; int a[1000100],pre[1000100],sur[1000100],mn[1000100]; signed main(){ int n,m,p,q,i,j,k,x,y,Ans=inf; cin>>n>>p>>q>>x>>y; scanf("%s",s+1); for(i=1;i<=n;i++)a[i]=(s[i]==-?-1:1); for(i=1;i<=n;i++)pre[i]=pre[i-1]+a[i]; for(i=1;i<=n;i++)mn[i]=min(mn[i-1],pre[i]); k=(q-p-pre[n])/2; for(i=1;i<=n;i++){ int sum=min(pre[n]-pre[n-i+1]+mn[n-i+1],sur[i-1]); int t=max(0ll,(-p-sum+1)/2); Ans=min(Ans,(abs(k-t)+t)*x+(i-1)*y); sur[i]=min(sur[i-1]+a[n-i+1],0ll); } cout<<Ans; return 0; }

 

相关文章