AtCoder Beginner Contest 393题解(D~F)
比赛链接 D题将1的移动转换为0的移动,所有的0都要移动到1的两侧,统计每个0左右两侧1的个数,取最小值,则为移动该0所需的最小步数。 1234567891011121314151617181920212223242526272829303132int main() { std::ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int n; string s; cin >> n >> s; std::vector<int> dp1(n), dp2(n); for (int i = 1; i < n; i++) { if (s[i - 1] == '1') { dp1[i] = dp1[i - 1] + 1; } else { dp1[i] = dp1[i -...
Codeforces Round 998 (Div. 3)题解
A题统计$a_1+a_2$,$a_4-a_2$,$a_5-a_4$,三个数最多有多少个相同即可。 123456789101112131415void solve() { int a1, a2, a4, a5; cin >> a1 >> a2 >> a4 >> a5; int x1 = a1 + a2, x2 = a4 - a2, x3 = a5 - a4; if (x1 == x2 || x2 == x3 || x1 == x3) { if (x1 == x2 && x2 == x3) { cout << 3 << "\n"; } else { cout << 2 << "\n"; } } else { cout...
Rust备忘录
本文章旨在记录 Rust 学习过程中的一些知识。 Cargo其作用相当于 Rust 的项目管理器和语言编译器。 cargo new project_name:创建名为project_name的项目,文件夹内包含源码文件夹src,编译产物target,.gitignore文件,Cargo.lock文件和Cargo.toml文件。 src:内含main.rs初始源代码,将源代码存放此处。 target: debug:存放调试版本的编译产物。 release:存放发布版本的编译产物。 .gitignore:Git忽略文件。 Cargo.lock:锁定依赖版本的文件。 Cargo.toml:项目配置文件,包含项目名称、版本、依赖等信息。 cargo build:编译项目,生成调试版本的可执行文件,存放在target/debug目录下。默认为--debug模式,可通过--release参数生成发布版本,存放在target/release目录下。 cargo run:编译并运行项目,等同于先执行cargo build然后运行生成的可执行文件。 cargo...
Codeforces Round 993 (Div. 4)题解 (A~H)
题目链接 A题答案为$n-1$。 B题p变为q,q变为p,再反转即可。 C题贪心安排a,b只猴子能坐的数量,剩余位置分配给c。 123456void solve() { int a, b, c, m; cin >> m >> a >> b >> c; cout << std::min(a, m) + std::min(b, m) + std::min(2 * m - std::min(a, m) - std::min(b, m), c) << '\n';} D题由于数列$a$中所有数字均在$n$之内,且需要填的数列$b$也必须在$n$之内,那就让$b$中每个数字出现的模只出现一次,空缺用$a$中未出现的数字替代,可知一定不会有冲突的情况,一定可以按要求填满。 123456void solve() { int a, b, c, m; cin >> m >> a >> b...
Codeforces Round 991 (Div. 3)题解
画师:赤倉 题目链接:Codeforces Round 991 (Div. 3) A题123456789101112131415void solve() { int n, x; cin >> n >> x; int sum = 0, ans = 0; for (int i = 0; i < n; i++) { string s; cin >> s; sum += s.size(); if (sum <= x) { ans++; } } cout << ans <<...
Educational Codeforces Round 172 (Rated for Div. 2)A~D题解
题目链接:Educational Codeforces Round 172 (Rated for Div. 2) A题贪心(题目中也明确规定了就是贪心),排序从最大的开始取就行。 12345678910111213141516void solve() { int n, k; cin >> n >> k; std::vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } std::sort(a.begin(), a.end(), std::greater<int>()); int res = 0; for (int i = 0; i < n; i++) { if (res + a[i] <= k) { res += a[i]; } else break; ...
Codeforces Round 992题解A~D
比赛链接 A题先求前缀和,如果当前的和可以拼成一个完整的正方形,可以发现它必须是奇数$2k + 1,k\in N^{+}$的平方,直接判断即可。 1234567891011121314151617181920212223242526272829303132std::set<int> ms;void solve() { int n; cin >> n; std::vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; if (i) { a[i] += a[i - 1]; } } int ans = 0; for (int i = 0; i < n; i++) { if (ms.find(a[i]) != ms.end()) { ans++; ...
Codeforces Round 989题解
比赛链接 A题给定两个整数$a$,$b$,寻找一个数$m$使得$m >= min(a, b) \wedge a \equiv b(\bmod m)$,易知隐含条件$m<=lcm(a, b)$,根据根据题目描述$a,b<=1000 \rightarrow lcm(a,b)<1e6$,枚举即可。 12345678910void solve() { int a, b; cin >> a >> b; for (int i = std::min(a, b); ; i++) { if (i % a == i % b) { cout << i << '\n'; return; } ...
C++模板基础(五)模板实战
在本章节中,我们将简要探讨针对具体的工程,在编写模板代码时会遇到什么问题。在这里我们必须接触到C++编译器的工作原理,以便于我们能对它抛出的错误做出合理的判断。 C++编译器两个最重要的组件是编译器和链接器...

