惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
MyScale Blog
MyScale Blog
博客园_首页
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
罗磊的独立博客

Shiroha白羽的博客

Golang 踩坑 —— interface 为参数的时候传 nil 指针 Codeforces Round 925 (Div. 3) Codeforces Round 924 (Div. 2) Codeforces Round 923 (Div. 3) Codeforces Round 922 (Div. 2) Codeforces Round 921 (Div. 2) Educational Codeforces Round 161 (Rated for Div. 2) Codeforces Round 920 (Div. 3) Codeforces Round 919 (Div. 2) Hello 2024 Good Bye 2023 Codeforces Round 918 (Div. 4) 个人备份的常用 macOS 清理命令 Codeforces Round 917 (Div. 2) Pinely Round 3 (Div. 1 + Div. 2) Codeforces Round 915 (Div. 2) Codeforces Round 914 (Div. 2) Codeforces Round 913 (Div. 3) Educational Codeforces Round 159 (Rated for Div. 2) Codeforces Round 912 (Div. 2) Codeforces Round 911 (Div. 2) CodeTON Round 7 (Div. 1 + Div. 2, Rated, Prizes!) Educational Codeforces Round 158 (Rated for Div. 2) Codeforces Round 910 (Div. 2) Codeforces Round 909 (Div. 3) Codeforces Round 908 (Div. 2) Educational Codeforces Round 157 (Rated for Div. 2) C++自定义的字面量 Codeforces Round 907 (Div. 2) Codeforces Round 916 (Div. 3)
Educational Codeforces Round 160 (Rated for Div. 2)
Shiroha · 2024-02-17 · via Shiroha白羽的博客

A. Rating Increase

大致题意

有两个分数,并列写在一起了,已知第一个分数一定小于第二个分数,问是否可能,并给出一种拆法

思路

找到第二个非 0 的值前面拆开就行,就是最优的情况

AC code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void solve() {
int _;
cin >> _;
for (int tc = 0; tc < _; ++tc) {
string str;
str.reserve(10);
cin >> str;
int a[2] = {str.front() - '0', 0}, cur = 0;
for (int i = 1; i < str.size(); ++i) {
if (cur == 0 && str[i] != '0') {
cur = 1;
}
a[cur] *= 10;
a[cur] += str[i] - '0';
}
if (a[0] < a[1]) cout << a[0] << ' ' << a[1] << endl;
else cout << -1 << endl;
}
}

B. Swap and Delete

大致题意

有一个 $01$ 字符串,允许选择一个字符进行删除(并消耗一点成本),或者交换两个值(不消耗成本),
问是否可以经过任意次数操作后,使得新的字符串和原来的字符串没有一个字符相同

思路

从头开始尽力使用交换即可,如果遇到一个字符不能靠交换解决了,那么其后面的字符都得删掉

因为是要与原始字符串不同,仅删掉这个字符,后面的字符就到这个字符的位置了

AC code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void solve() {
int _;
cin >> _;
string str;
str.reserve(2e5 + 10);
for (int tc = 0; tc < _; ++tc) {
cin >> str;
int cnt[2] = {};
for (const auto& c: str) ++cnt[c - '0'];
int ans = 0;
for (int i = 0; i < str.size(); ++i) {
if (cnt[(str[i] - '0') ^ 1]) --cnt[(str[i] - '0') ^ 1];
else {
ans = static_cast<int>(str.size()) - i;
break;
}
}
cout << ans << endl;
}
}

C. Game with Multiset

大致题意

有一个有 $2^n$ 组成的集合,每次允许往里面添加值,问是否可以靠这几个值相加得到某个具体的值

思路

从二进制角度考虑即可,为每一个位置进行凑,不足就让下面的位置进上来

AC code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void solve() {
int n;
cin >> n;
int cnt[30] = {};
for (int q = 0; q < n; ++q) {
int op, v;
cin >> op >> v;
if (op == 1) ++cnt[v];
else {
int last = 0;
for (int i = 29; i >= 0; --i) {
last <<= 1;
int cur = last + ((v & (1 << i)) ? 1 : 0);
last = max(0, cur - cnt[i]);
}
cout << (last == 0 ? "YES" : "NO") << endl;
}
}
}