您的位置:首页 > 其它

Codeforces 401B Sereja and Contests(水题)

2014-03-12 21:15 441 查看
题目链接:Codeforces 401B Sereja and Contests

题目大意:cf上有n-1场比赛,然Sereja参加了其中的m场,然后给出Sereja参加比赛的场次,如果是div1
的话,那么会同时有div1和div2两场,所以要给出两个序号(并且是相邻的),如果是div2的话,就只会有1场的序号,问说Sereja最少和最多错过几场比赛。

解题思路:因为场次最大才4000,所以开一个数组标记一下参加了哪些比赛,然后最后遍历一遍数组,最多的很明显算按照全都是div2的算,最少的肯定是说哪些场次有可能是div1的,就按照div1算。

#include <stdio.h>
#include <string.h>
#include <algorithm>

using namespace std;
const int N = 4005;

int n, k, v
;

void solve () {
v[0] = 1;
int l = 0, r = 0;
for (int i = 1; i < n; i++) {
if (v[i] == 0) {
l++;

if (v[i-1] == 0) {
v[i] = 1;
r++;
}
}
}
printf("%d %d\n", l-r, l);
}

int main () {
memset(v, 0, sizeof(v));
scanf("%d%d", &n, &k);

int t, a, b;
for (int i = 0; i < k; i++) {
scanf("%d", &t);

if (t == 2) {
scanf("%d", &a);
v[a] = 1;
} else {
scanf("%d%d", &a, &b);
v[a] = v[b] = 1;
}
}
solve ();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: