首页 > 其他分享 >题解:CF2014D Robert Hood and Mrs Hood

题解:CF2014D Robert Hood and Mrs Hood

时间:2024-10-02 19:02:14浏览次数:1  
标签:int 题解 Robert cover cin day Hood

差分,每次差分将 \(\max(1,l-d+1)\) 加 \(1\),将 \(r+1\) 位置减 \(1\)。

然后前缀和求原数组,再遍历一下求最小值和最大值即可。

代码:

#include<bits/stdc++.h>
using namespace std;
int main() {
	int t;
	cin >> t;
	while (t--) {
		int n, d, k;
		cin >> n >> d >> k;
		vector<int> cover(n + 2, 0);
		for (int i = 0; i < k; ++i) {
			int l, r;
			cin >> l >> r;
			cover[max(1,l-d+1)]++;
			cover[r + 1]--;
		}
		for (int i = 1; i <= n; ++i) {
			cover[i] += cover[i - 1];
		}
		int bday = 1, mday = 1;
		int maxn = -1, minn = INT_MAX;
		for (int day = 1; day <= n - d + 1; ++day) {
			if (cover[day] > maxn) {
				maxn = cover[day];
				bday = day;
			}
			if (cover[day] < minn) {
				minn = cover[day];
				mday = day;
			}
		}
		cout << bday << ' ' << mday << '\n';
	}
	return 0;
}

标签:int,题解,Robert,cover,cin,day,Hood
From: https://www.cnblogs.com/cly312/p/18444979

相关文章

  • 题解:CF2009E Klee's SUPER DUPER LARGE Array!!!
    设\(m\)为\(a_1+\dots+a_i\),\(n\)为\(a_{i+1}+\dots+a_n\)。我们可以使用二分查找来搜索\(i\),使得\(m-n\)为最小的负数。如果我们移动到\(i+1\),则此时\(m-n\)为最小的整数。答案是两种情况下的最小绝对值。代码:#include<bits/stdc++.h>usingnamespacestd;pair<......
  • 题解:CF2009D Satyam and Counting
    比较容易观察的一道题,但是场上不开longlong见祖宗了。由于这题的\(x\)最大值比较小,所以我们可以直接存每个坐标是否有点。有两种三角形符号条件:存在两个点\((x,0),(x,1)\),可以观察到任意的其它点都可以成为第三点。有三个点为\((x,0),(x+1,1),(x+2,0)\)或\((x,1),(x+1......
  • 题解:CF2009C The Legend of Freya the Frog
    比较一眼的题目,场切了。分别考虑\(x\)和\(y\)。在\(x\)方向上我们需要的跳跃次数是\(\lceil\frac{x}{k}\rceil\),在\(y\)方向上我们需要的跳跃次数是\(\lceil\frac{y}{k}\rceil\)。考虑下面的两种情况:\(\lceil\frac{y}{k}\rceil\geq\lceil\frac{x}{k}\rceil......
  • 题解:P11137 [APC001] B - Checker
    注意到每个字符串长度相同,所以我们可以按照题意逐个遍历小K的题目和所有题库里的题目,统计相同位置字符相同的个数,如果大于\(\left\lceil\frac{k}{2}\right\rceil\),这两个题目就是重题。代码:#include<bits/stdc++.h>usingnamespacestd;boolc(stringa,stringb){in......
  • 题解:CF2014C Robin Hood in Town
    分享一种二分答案做法。先特判\(n=1\),\(n=2\),开始就有超过一半的人不高兴的情况。然后二分\(x\),计算新的和,新的平均值,如果有超过一半的人不高兴,就更新答案。代码:#include<bits/stdc++.h>usingnamespacestd;intmain(){ intt; cin>>t; while(t--){ intn; cin>>n......
  • 题解:SP7973 ACPC10E - Sometimes, a penalty is good!
    比较简单的一道数学题。思路:计算小组赛的比赛总数。longlongstage1=G*T*(T-1)/2;每组有\(T\)个队伍,每个队伍都需要与其他\(T-1\)个队伍比赛,共有\(T\cdot(T-1)\)场比赛。共有\(G\)组,因此小组赛总比赛数为\(\frac{G\cdotT\cdot(T-1)}{2}\)。计算进入......
  • 题解:SP10242 ACPC11D - Dice on a Board
    思路递归生成所有的可能的筛子朝向,用DFS标记所有可达的位置,用dijkstra计算从起始位置到目标位置的最优路径,并确定在移动过程中能够获得的最大分数。generate函数generate用于生成所有可能的骰子朝向排列,\(mask\)作为参数,用于表示哪些数字已经被使用。使用二进制压缩。......
  • 题解:P9954 [USACO20OPEN] Cowntact Tracing B
    考虑暴力。枚举让每头牛都当一次“零号病人”和\(K\)的所有组合,模拟感染的过程,检查得出的病人是否和给出的一样即可。代码:#include<bits/stdc++.h>usingnamespacestd;boolinfectedd[101];intN,cowx[251],cowy[251];boolcheck(intpatient_zero,intK){ boolinfect......
  • 题解:SP9934 ALICE - Alice and Bob
    状态表示:使用两个变量来表示当前游戏的状态:\(a\)表示包含\(1\)个石子的堆的数量,\(b\)表示包含多于\(1\)个石子的堆的可操作次数。游戏策略:从包含多个石子的堆中取走一个石子,这会减少\(b\)。从包含\(1\)个石子的堆中取走一个石子,这会减少\(a\)。合......
  • 题解:P9939 [USACO21OPEN] Acowdemia III B
    考虑贪心。遍历每只奶牛:如果它最多与一头奶牛相邻,那么什么都不会发生。如果它与两头以上的奶牛相邻,那么它与两侧的两头奶牛相邻。将答案递增\(1\)。否则,如果正好有两头相邻的奶牛,我们就把它们配对。也就是说,将这对奶牛插入一组。代码:#include<bits/stdc++.h>usingname......