求助之怎么卡常
查看原帖
求助之怎么卡常
639700
mtaoye楼主2022/10/20 21:17

rt

为什么别人的n2吸了氧能过,xdm能帮我卡常吗

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=100005;
const int maxm=10005;
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
struct node{
	int l,r,f;
};
deque<node> q;
int a[maxn],n,f[maxn],s[maxn],p[maxn],l[maxn],cnt;
inline int calc(int j,int i)
{
    cnt=s[i]-s[j]+1;
    return a[i]*cnt*cnt;
}
/*
{
	f[i]=f[j]+calc(j+1,i);
    calc=max(a[k]*count(k)*count(k))
}
*/
signed main()
{
    n=read();
    for(int i=1;i<=n;++i)
    {
        a[i]=read();
        s[i]=s[p[a[i]]]+1;
        l[i]=p[a[i]];
        p[a[i]]=i;
        for(int j=i;j;j=l[j])
        {   
            f[i]=max(f[i],f[j-1]+calc(j,i));
        }
    }
   // for(int i=1;i<=n;++i) cout<<d[i]<<endl;
   cout<<f[n];
}
2022/10/20 21:17
加载中...