Codeforces 401B Sereja and Contests(水题)

来源:互联网 发布:防木马软件 编辑:程序博客网 时间:2024/06/07 06:09

题目链接: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[N];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;}


0 0