成都网站推广找四川冠辰宁波seo网页怎么优化
1.审题:第一个人与第二个人入住的旅馆要求是同色的;
两个人去消费的旅馆并没有要求与入住的旅馆是同色的(这点要小心)
2.要求记录以下数据:
1)a[color]表示当前同为颜色color的旅馆数
2)b[color]表示可以入住的颜色color的旅馆数
3.在线处理
1)当前price<=p,则更新b[color],更新ans += b[] - 1 (减1的原因是当前旅馆是第二个人住的,ans是累加第一个人住的旅馆数
2)更新ans,因为没有更新b[color],所以ans += b[]
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 55;
int n, k, p;
int ai, bi;
int a[N], b[N], ans;
//a[ N ]: N号颜色到当前位置时的旅馆数
//b[ N ]:N号颜色可以入住的旅馆数
int main(){freopen("P1311_1.in", "r", stdin);cin >> n >> k >> p;for(int i = 1; i <= n; i ++){cin >> ai >> bi;a[ai] ++;if(bi <= p){for(int j = 0; j <= k; j ++)//并不要求消费的旅馆与入住的旅馆同色 b[j] = a[j];ans += b[ai] - 1;//(第二人住当前旅馆。累加的是第一个人住的旅馆数,所以减1)}else ans += b[ai]; }cout << ans;return 0;
}