30分既有WA也有TLE求调
查看原帖
30分既有WA也有TLE求调
1309440
wkh0130楼主2025/2/8 14:41
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f
#define mod 1000000007
#define pii pair<int,int>
#define mp make_pair
#define lowbit(x) ((x) & -(x))

const int N = 2e5+5,C = 55;
vector<int> v[C];
int f[N][C],lo[C],n,k;
int c[N],ans,p,dp[N];
void init(){
	lo[1] = 0;
	for(int i = 2;i <= n;i++) lo[i] = lo[i/2]+1;
	for(int j = 1;j <= lo[n];j++){
		for(int i = 1;i+(1<<j)-1 <= n;i++){
			f[i][j] = min(f[i][j-1],f[i+(1<<j-1)][j-1]);
		}
	}
}
int query(int l,int r){
	int s = lo[r-l+1];
	return min(f[l][s],f[r-(1<<s)+1][s]);
}
signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);	
	cin>>n>>k>>p;
	for(int i = 1;i <= n;i++){
		cin>>c[i]>>f[i][0];
		v[c[i]].push_back(i);
	}
	init(); 
	for(int i = 1;i <= n;i++){
		for(int j = 0;v[c[i]][j] < i;j++){
 			int x = v[c[i]][j];
			if(query(x,i) <= p) dp[i]++;
		}
		ans+=dp[i];
	}
	cout<<ans;
	return 0;
}
2025/2/8 14:41
加载中...