随笔分类 - codeforces
摘要:A. Souvlaki VS. Kalamaki 题意:一个数组\(a\),你可以将它重排。然后从左到右操作,奇数位置你操作,偶数位置另一个人操作。每次可以选择交换\(a_i, a_{i+1}\)或者不操作。你想使得数组升序,另一个不想。求能不能使得数组升序。 考虑排序后的\(a\),对于每个偶数位
阅读全文
摘要:A. Sequence Game 题意:一个数组\(a\),每次选择两个相邻的数,用它们之间的一个值替换它们两个。求最后能不能使得留下的数是\(x\)。 如果\(\min(a) \leq x \leq \max(a)\)则可行。 最小值和最大值和别人操作时可以留下自己,然后让这两个值最后一起操作。
阅读全文
摘要:A. Square? 点击查看代码 #include <bits/stdc++.h> using i64 = long long; void solve() { int a, b, c, d; std::cin >> a >> b >> c >> d; if (a == b && b == c &&
阅读全文
摘要:A. Pizza Time 题意:有\(n\)个物品,每次分成三部分,你拿走最少的一部分,第二大的丢弃,最大的保留下一轮。求你最多可以拿到多少。 我们可以分\(1, 1, n - 2\)。这样我们得到\(\lfloor \frac{n-3}{2} \rfloor\)个,然后剩下\(3\)个可以拿一个
阅读全文
摘要:A. Notelock 题意:一个二进制串,问有多少位置的前\(k-1\)个位置没有\(1\)。 从前往后扫,维护一个可以包含的最右位置就行。 点击查看代码 #include <bits/stdc++.h> using i64 = long long; void solve() { int n, k
阅读全文
摘要:A. Beautiful Average 点击查看代码 #include <bits/stdc++.h> using i64 = long long; void solve() { int n; std::cin >> n; std::vector<int> a(n); for (int i = 0
阅读全文
摘要:A. Circle of Apple Trees 题意:一个环形数组,每次到一个位置可以选择拿走这个元素或者跳过,然后走到下一个位置。每次拿的数要比之前拿的大,求最多拿多少数。 显然可以从小到大拿,那么答案就是不同数的个数。 点击查看代码 #include <bits/stdc++.h> using
阅读全文
摘要:A. Candies for Nephews 题意:求大于等于\(n\)的最小\(3\)的倍数。 点击查看代码 #include <bits/stdc++.h> using i64 = long long; void solve() { int n; std::cin >> n; std::cout
阅读全文
摘要:A. Increase or Smash 题意:你有一个全\(0\)数组,每次可以使得数组全部加上一个数或者使得某些位置变为\(0\)。求变成\(a\)的最小操作数。 最少的操作方案是,先把\(a\)去重后排序,然后从大到小每次加\(a_i - a_{i-1}\),然后把小于\(a_i\)的位置都变
阅读全文
摘要:A. Be Positive 题意:一个数组\(a\),只包含\(-1, 0, 1\)。你每次可以使得一个数加一,求使得数组乘积为正的最少操作次数。 显然只需要操作\(-1\)或者\(0\)。\(0\)必须都加一。那么如果\(-1\)是偶数个,不需要操作,否则需要操作一个\(-1\)两次变成\(1\
阅读全文
摘要:A. Equal Occurrences 题意:求\(a\)的一个最长子序列,使得每个数出现的次数相同。 记录每个数出现的次数,排序后从小到大枚举出现次数,那么比它多的数都可以选。 点击查看代码 #include <bits/stdc++.h> using i64 = long long; void
阅读全文
摘要:A. All Lengths Subtraction 题意:一个排列,对于每个\(k \in [1, n]\),你都要选择一个长度为\(k\)的子数组使得它们都减一,求有没有方案使得最终所有数都是\(0\)。 考虑\(k\)从大到小,发现做\(n\)的时候\(1\)变成\(0\),此时如果\(1\)
阅读全文
摘要:A. Cut the Array 题意:把数组分成三段,使得每段和模\(3\)后的值都相同或者都不相同。 \(n\)很小,暴力枚举分段就行了。 点击查看代码 #include <bits/stdc++.h> using i64 = long long; void solve() { int n; s
阅读全文
摘要:A. Shift Sort 题意:一个\(01\)串,每次可以选择\(i, j, k\)三个位置让它们左移或右移,求使得字符串升序的最小操作数。 记有\(cnt\)个\(0\),如果一个\(0\)不在前\(cnt\)个位置里,那么它需要一次交换,且每次交换最多让一个\(0\)复位。所以这样位置的个数
阅读全文
摘要:A. Maple and Multiplication 题意:给你\(a, b\),每次可以让\(a\)乘以任何数或者让\(b\)乘以任何数,求\(a, b\)相等的最小操作数。 显然\(a, b\)都变成\(lcm(a, b)\)最优。 点击查看代码 #include <bits/stdc++.h
阅读全文
摘要:A. In the Dream 题意:比赛上半场比分为\(a:b\),下半场为\(c:d\),没有一个队伍能连续赢三次,求这个比分可不可能。 一方每赢两次另一方就要断他连胜,然后最后还可以接两次胜利然后结束,那么有\(a * 2 + 2 \leq b\),\(b * 2 + 2 \leq a\)。同
阅读全文
摘要:A. Painting With Two Colors 题意:一个长度为\(n\)的数组,先把一段长度为\(a\)的子数组染为红色,再把一段长度为\(b\)的子数组染为蓝色,蓝色会覆盖红色。求能不能使得数组是回文。 因为要左右对称,所以肯定是染色的两个子数组的中心位置应该相同。 那么如果\(a >
阅读全文
摘要:A. Redstone? 题意:给你一个数组,使得\(\frac{a_1}{a_2} \times \frac{a_2}{a_3} \times ... \times \frac{a_{n-1}}{a_n} = 1\)。 发现式子其实是\(\frac{a_1}{a_n} = 1\); 那么只要有两个
阅读全文
摘要:A. Homework 按题意模拟。 点击查看代码 #include <bits/stdc++.h> using i64 = long long; void solve() { int n, m; std::string a, b, c; std::cin >> n >> a >> m >> b >
阅读全文
摘要:A. Lever 题意:balabala 输出\(\sum_{i=1}^{n} \max(0, a_i - b_i)) + 1\)。 点击查看代码 #include <bits/stdc++.h> using i64 = long long; void solve() { int n; std::c
阅读全文

浙公网安备 33010602011771号