摘要:
A - Seats #include <bits/stdc++.h> using namespace std; using i32 = int32_t; using i64 = long long; #define int long long using vi = vector<int>; usin 阅读全文
摘要:
对于选定的\(p_i\)的情况下,如何使得代价小?显然是按照\(b\)升序的方式。 因此我们可以考虑按照\(b\)进行排序。 考虑一种贪心的做法,我们枚举区间\([l,r]\),这样区间的必选就是\(a_l,a_r, (b_r- b_l)\),因此我们可以贪心的选择剩下\(a\)中的最小值。这样复杂 阅读全文
摘要:
首先我们随机两个数组\(valA_x,valB_x\)。 对于数组\(a\),记\(cnt\)表示\(a_i\) 在前缀中出现的次数。 若\(cnt\equiv 0 \mod 3\),则\(b_i=valA_x\) 若\(cnt\equiv 1 \mod 3\),则\(b_i=valB_x\) 若\ 阅读全文
摘要:
\(cnt\)的取值种类数不超过\(\sqrt n\)。因此我们可以枚举\(cnt\) 然后贪心选最大的值。 #include <bits/stdc++.h> using namespace std; using i32 = int32_t; using i64 = long long; #defi 阅读全文
摘要:
A. (-1,1)-Sumplete 首先只取\(-1\),这样的话选1和不选-1产生的贡献就是都是 +1。 枚举每一行,然后贪心选择需求最大的若干列。 #include <bits/stdc++.h> using namespace std; using i32 = int32_t; using 阅读全文
摘要:
A. Gambling on Choosing Regionals 最差情况就是,强队都和你去一起。因此赛站越小,排名也一定越小。 然后只要动态实现出每个学校最强的若干只队伍就好了。 #include <bits/stdc++.h> using namespace std; using i32 = 阅读全文
摘要:
A - tb的区间问题 枚举区间,然后用前缀和求解 #include <bits/stdc++.h> using namespace std; using i32 = int32_t; using i64 = long long; using vi = vector<int>; using pii 阅读全文
摘要:
注意读题,每次拿完之后是放在开头。所以先手不败,因为最后剩下两个的时候,先手一定可以取较小值。 考虑怎样会出现平局? 首先已经知道了先手不败,那么对于后手来说,他追求的就是平局,也就是尽可能的保证每一步都都与先手相同。 所以,如果是回文串,或者两两相同,或者回文串包两两相同的情况,才可以平局。 #i 阅读全文
摘要:
[NOIP2012]借教室 简单的区间加和区间查询 #include <bits/stdc++.h> using namespace std; using i32 = int32_t; using i64 = long long; using ldb = long double; //#define 阅读全文
摘要:
这道题目我们可以考虑二分做,二分出最终的深度,然后尝试是否能使用不超过\(k\)次操作使得深度符合条件。 考虑如何和判断,我们可以从根节点开始搜索,如果当前点的深度为\(mid + 1\),就对当前点进行操作。但很可惜,这种贪心方法可以很容易的举出反例,比如深度为\(mid\)的点下面有很多个叶子, 阅读全文