计数的那段代码以一种奇怪的姿势跑了起来
查看原帖
计数的那段代码以一种奇怪的姿势跑了起来
690731
QianiaLF楼主2022/7/31 15:08

代码写的有些丑(改来改去又变成 O(n^3) ) 我的思路是吧每个客栈的色调分类,再根据咖啡店的区间价格统计符合的方案。 但是好像不太对(

#include <iostream>
using namespace std ;
int n , k , p , c ;
int colour , price[200010] ;  
int b[51] , i ;

int FindMin(int a , int b){
	int Min_price = price[a] ;
	for(int x = a ; x <= b ; x++)
		if(Min_price > price[x])
			Min_price = price[x] ;
	return Min_price ;
}

int main(){
    cin >> n >> k >> p ;
    int kind_colour[k][200010] ;
    for(i = 1 ; i <= n ; i++){
    	cin >> colour >> price[i] ;
		kind_colour[colour][b[colour]++] = i ;
	}
	for(i = 1 ; i <= k ; i++){
		for(int j = 1 ; j <= b[i] ; j ++)
			for(int l = 1 ; l <= b[i] - j + 1 ; l++)
				if(FindMin(kind_colour[i][j] , kind_colour[i][l])<= p)
					c++ ;
	}
	cout << c << endl ;	
	return 0 ;
}
2022/7/31 15:08
加载中...