正题
评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1311
题目大意
如果两个客栈是同样颜色且中间有客栈消费不超过p那么久算为一种方案,求方案总数
解题思路
先枚举颜色,然后枚举右边的,对于左边,记录两个数据:一个是有多个同样颜色的k,一个是有多少个选择方案y。
当枚举到一家消费不超过p的时,让y=k。
然后枚举到同样色调的,用y来统计,改变k就好了
codecodecode
#include<cstdio>
#include<cctype>
#define N 200010
#define ll long long
using namespace std;
int read() {int x=0,f=1; char c=getchar();while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();return x*f;
}
void print(int x){if (x>9) print(x/10); putchar(x%10+48); return;
}
ll n,k,p,color[N],cost[N],ans;
int main()
{//freopen("data.in","r",stdin);//freopen("data.out","w",stdout);n=read();k=read();p=read();for(ll i=1;i<=n;i++){color[i]=read();cost[i]=read();}for(ll i=0;i<k;i++){ll k=0,y=0;for(ll j=1;j<=n;j++){if(cost[j]<=p) y=k;if(color[j]==i) ans+=y,k++;if(cost[j]<=p) y=k;}}print(ans);
}