Codeforces Round 1012 (Div. 1) A B1 C1
2089A - Simple Permutation 从小往大顺着选,如果不是素数就选个稍微大一点的让结果是素数。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include <bits/stdc++.h>using namespace std;using ll = long long;constexpr int N = 5e5 + 5;vector<int> prime;int mint[N]; // 最小素因子 bool is_prime(int x) { return mint[x] == x;}signed main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); for...
〔补题〕2025 钉耙编程春季联赛(3)
(赛中 + 补题记录) 不是题解,更多是做题心得与评价。 1001 数列计数 组合数 (nm)\dbinom{n}{m}(mn) 是奇数 ⟺ n&m=m\iff n\&m=m⟺n&m=m。如果某一位 nnn 是 0,那 mmm 只能是 0 没得选,否则有 1 0 两种选择。 和上次 1001 类似,枚举 ℓ\ellℓ 的前缀,把其中一位 1 变成 0 之后,这一位后面的 1 就可以任意选择变成 0。 123456789101112131415161718Z res = 1;for (int i = 0; i < n; i++) { int L = 0; // 前缀 int sum = 0; for (int bit = 30; bit >= 0; bit--) { if (l[i] >> bit & 1) { // 这一位是 1 才能把 1 变成 0 if (((a[i] & L) == L)) { // 前缀要满足约束 sum +=...
〔主机註記〕第 58 周主机註記 (Mar.17 - Mar.23)
第 58 周主机註記 月曜日 (Mar.17) 火曜日 (Mar.18) 水曜日 (Mar.19) 木曜日 (Mar.20) 金曜日 (Mar.21) 土曜日 (Mar.22) 日曜日 (Mar.23)
Educational Codeforces Round 174 A - F
(一个月前的比赛) 2069A - Was there an Array? 12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int t; cin >> t; while (t--) { int n; cin >> n; n -= 2; vector<int> b(n); for (int i = 0; i < n; i++) { cin >> b[i]; } bool flag = 1; for (int i =...
〔补题〕2025 钉耙编程春季联赛(2)
(赛中 + 补题记录) 不是题解,更多是做题心得与评价。 时间卡的也太紧了,STD 两倍时限,STD 用数组我用 std::map 就 T 了。。 PI 节没出个关于 PI 的题 1001 学位运算导致的 和同学聊天时口胡的思路,可能有点混乱 所求的 yyy,直接看是若干个数 or and and or 这样从左至右算出来的,当然这些数可能重复。or and 运算满足分配律,所以表达式总是可以化简为若干个东西 or 起来再 and,或者若干个东西 and 起来再 or。选后者,比较符合直觉。 可以先从极端想,若干个东西 and 出来只有一位。枚举每一位,把 and 起来还有这一位的东西都 and 起来,尽量让其它位都变 0。当然如果没办法都变成 0,就形成了要有这一位,另一位就必须存在这种关系(注意这关系没有传递性)。比如原来是 10 和 11(二进制),包含最低位的那只能是 11。这些数有个特点,要么独立要么包含,两两 and 不可能更小,不会有 110 和 011 同时出现。这样处理将得到 64 个大数。 现在的问题就是,64...
Codeforces Round 1009 (Div. 3) E - G
2074E - Empty Triangle Hint 1 随机化 平面上 nnn 个点是毫无规律的,就算每个点问一次也只能问到 3×753\times 753×75 个点,这个数远小于 150015001500,想要让每个点地位平等,考虑随机。 Hint 2 从一个已知的三角形往里缩 相比包含特殊点的三角形,不包含的三角形其面积相对较小。而且包含特殊点的三角形内部一定有答案。如果问到一个包含特殊点的三角形,想法是往里缩,直到找到答案。 具体地,如果问到 x−y−zx-y-zx−y−z 里面包含 uuu,可能会考虑继续问 x−y−ux-y-ux−y−u 或 x−u−zx-u-zx−u−z 或 u−y−zu-y-zu−y−z。这里有好几种选择,用随机数选。 123456789101112131415161718192021222324252627282930#include <bits/stdc++.h>using namespace std;mt19937_64...
Codeforces Round 1008 (Div. 1) A - C
2077A/2078C - Breach of Faith 取较大的 n2+1\cfrac{n}{2}+12n+1 个放在奇数位,较小的放在偶数位。 12345678910111213141516171819202122232425262728293031323334353637#include <bits/stdc++.h>using namespace std;using ll = long long;int main() { int J; cin >> J; while (J--) { int n; cin >> n; vector<int> a(n * 2); for (int i = 0; i < n * 2; i++) { cin >> a[i]; } sort(a.begin(), a.end()); ...
〔主机註記〕第 57 周主机註記 (Mar.10 - Mar.16)
第 57 周主机註記 月曜日 (Mar.10) 火曜日 (Mar.11) 水曜日 (Mar.12) 木曜日 (Mar.13) 金曜日 (Mar.14) 土曜日 (Mar.15) 留存 或許在未來,《主机註記》將成爲我留存於世的唯一文字記錄。我將把我所思所想以及一切欲表達的內容悉數融入其中,而並不侷限於與主机的對話。我將刪除各社交媒體的收藏與點讚記錄,清理數字垃圾,如 B 站、知乎、小紅書等,也包括 QQ 群或者與 AI 的對話記錄。 日曜日 (Mar.16)
〔补题〕2025 钉耙编程春季联赛(1)
(赛中 + 补题记录) 不是题解,更多是做题心得与评价。 做完前三题看剩下的题都没人过,就先切了 10。 1001 签到 签到不谈。 1006 密码 以为都是正数,没枚举 WA 了一次。 正解是枚举所有可能情形,塞进 map 里。答案是 map 值为 1 的那个。 1234567891011121314151617181920212223242526int n;cin >> n;map<int, int> mp;for (int i = 0; i < n; i++) { array<int, 3> a; cin >> a[0] >> a[1] >> a[2]; sort(a.begin(), a.end()); vector<int> res; do { if (((a[2] - a[0]) % a[1] == 0) && ((a[2] - a[0]) / a[1] >= 0)) { ...
〔主机註記〕第 56 周主机註記 (Mar.3 - Mar.9)
第 56 周主机註記 月曜日 (Mar.3) 火曜日 (Mar.4) 麻辣 「麻辣燙悖論」 假設存在兩種商品,一種價格較高(記爲商品 A),另一種價格較低(記爲商品 B)。商家將這兩種商品捆綁銷售,其售價爲兩件商品價格的某個中間值。 如果消費者在購買該捆綁商品後,被告知必須選擇丟棄其中一件商品,應該保留哪一件?(這裏特別說明,在購買時是不知道買之後必須丟棄一件的) 一人認爲應當保留較便宜的商品 B,丟棄商品 A。理由是,盡管 B 價格較低,但由於是以捆綁價格購買的,丟棄 B 意味著放棄了原本已經支付的高價錢,會造成較大損失。 另一人則認爲應當保留較貴的商品 A,丟棄商品 B。理由是,商品 A 本身的價值更高,本身更值錢,保留它能帶來更大的實際價值。 你怎麼看? (事情的起因是買麻辣燙然後吃不下了,和同學爭論是吃肉還是吃菜) 選你要的,選你想吃的,吃不下了再好的東西你吃掉只會想吐出來。 有理,是我們太看重錢了,兩個人都在論錢。我之前在想原售價和購買價格,原售價更能代表價值,而購買價格,只能說是受到各種優惠或者其它營銷方面的影響,並不能決定商品的真實價格。 價值 和 ...