建议加强数据
查看原帖
建议加强数据
764773
AstaSunch_楼主2025/1/19 08:26

rt,下面的代码期望时间复杂度 Θ(nk2)\Theta(\frac{nk}2),能有 9090 分:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,k,p,lst[10004],num[10004],sum=0;
bool vis[10004];
struct node{
	ll a;
	bool b;
}m[2000006]; 
ll fas(ll n){
	return n*(n-1)/2;
}
int main(){
	cin>>n>>k>>p;
	for(int i=1,k;i<=n;i++){
		cin>>m[i].a>>k;
		m[i].b=(k<=p);
		lst[m[i].a]=i,num[m[i].a]++;
	}
	for(int i=1;i<=n;i++){
		if(!vis[m[i].a]){
			ll len=lst[m[i].a]-i+1,N=num[m[i].a],ans=fas(N),tmp=0,f=1;
			for(int j=i;j-i+1<=len;j++){
				f=1;
				if(m[j].b)ans-=fas(tmp),tmp=0,f=0;
				if(m[j].a==m[i].a&&f)tmp++;
			}
			ans-=fas(tmp),tmp=0,f=0,sum+=ans,vis[m[i].a]=1;
		}
	}
	cout<<sum;
}
2025/1/19 08:26
加载中...