暴力,0分求调
查看原帖
暴力,0分求调
633454
LLL789楼主2024/11/26 18:17

如题,代码带注释,最坏情况下O(n2n^2

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int N=2e5+5;
int n,k,p;
vector<int> st[52];//栈 
int a[N],b[N];//装饰色调,最低消费 
unsigned long long ans;
int c[N];//差分前缀和数组 
int main(){
	scanf("%d%d%d",&n,&k,&p);
	for(int i=1;i<=n;i++){
		scanf("%d%d",&a[i],&b[i]);
		st[a[i]].push_back(i);//将色调为a[i]的客栈按次序放在同一个栈中 
		if(b[i] <= p){//是符合要求的咖啡店 
			c[i]=1;
		}
	}
	for(int i=1;i<=n;i++){
		c[i]+=c[i-1];//前缀和 
	}
	for(int i=0;i<k;i++){//遍历所有色调的栈 
		for(int j=0;j<st[i].size();j++){
			for(int k=j+1;k<st[i].size();k++){//考察每一对可能的答案 
				int l=st[i][j],r=st[i][k];
				if(c[l] == c[k] && b[l] > p){
					continue;//中间一个符合的也没有,且左边界也不符合 
				}
				ans++;
			} 
		}
	}
	printf("%llu",ans);
	return 0;
}
2024/11/26 18:17
加载中...