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

推荐订阅源

V
Visual Studio Blog
U
Unit 42
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
博客园 - 司徒正美
Vercel News
Vercel News
I
InfoQ
GbyAI
GbyAI
C
Check Point Blog
B
Blog RSS Feed
Martin Fowler
Martin Fowler
B
Blog
MyScale Blog
MyScale Blog
腾讯CDC
博客园 - Franky
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)

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) Educational Codeforces Round 160 (Rated for 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)
Educational Codeforces Round 156 (Rated for Div. 2)
Shiroha · 2023-11-20 · via Shiroha白羽的博客

A. Sum of Three

大致题意

将一个数拆成三个数,要求这三个数不同且都不是 $3$ 的倍数,给出一种拆法即可

思路

要拆成三个不同的数,且都不是 $3$ 的倍数,那么最小之能拆成 $1, 2, x$ 且 $x \geq 4$,而且还得保证 $x$ 不是 $3$ 的倍数。若这样拆了之后 $x$ 还是 $3$ 的倍数,那就只能 $1, 4, x$ 这样拆

AC code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void solve() {
int _;
cin >> _;
for (int ts = 0; ts < _; ++ts) {
int n;
cin >> n;
if (n <= 6 || n == 9) {
cout << "NO" << endl;
} else if (n % 3) {
cout << "YES" << endl;
cout << "1 2 " << n - 3 << endl;
} else {
cout << "YES" << endl;
cout << "1 4 " << n - 5 << endl;
}
}
}

B. Fear of the Dark

大致题意

笛卡尔坐标系上有两个灯,一个目标点,现在需要从 $(0, 0)$ 出发,走到目标点,路径完全任意,但是必须在灯光下走,问这两盏灯的最小灯光范围是多少

思路

比较简单,只有两种可能:1、只用一盏灯,2、同时用两盏灯

AC code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void solve() {
int _;
cin >> _;
for (int ts = 0; ts < _; ++ts) {
int px, py, ax, ay, bx, by;
cin >> px >> py >> ax >> ay >> bx >> by;
auto dist = [&](int a, int b, int x, int y) {
return sqrt((a - x) * (a - x) + (b - y) * (b - y));
};

double a0 = dist(0, 0, ax, ay);
double b0 = dist(0, 0, bx, by);
double ap = dist(px, py, ax, ay);
double bp = dist(px, py, bx, by);
double ab = dist(ax, ay, bx, by);

double ans = max(ap, a0);
ans = min(ans, max(bp, b0));
ans = min(ans, max(max(min(a0, b0), min(ap, bp)), ab / 2));
cout << setprecision(10) << ans << endl;
}
}

C. Decreasing String

大致题意

有一个初始的字符串,每次删除一个,使其每次都保证是字典序最小的方案,将每一次的结果字符串拼接,得到一个最终结果字符串,问这个字符串的第 $x$ 位的字母是什么

思路

也是比较简单的题,要保证字典序最小,那就得使得字符串前缀尽可能保证非递减即可。用单调栈模拟一下就行

AC code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void solve() {
int _;
cin >> _;

string str;
str.reserve(1e6 + 10);
for (int ts = 0; ts < _; ++ts) {
int pos;
cin >> str >> pos;

// bs
if (pos <= str.size()) {
cout << str[pos - 1];
continue;
}

int l = 0, r = str.size();
while (l + 1 < r) {
int mid = (l + r) >> 1;
int tot = (str.size() + (str.size() - mid)) * (mid + 1) / 2;
if (tot < pos) l = mid;
else r = mid;
}
pos -= (str.size() + (str.size() - l)) * (l + 1) / 2 + 1;

vector<char> st;
int cur = 0;
l++;
while (l--) {
while (cur < str.size() && (st.empty() || st.back() <= str[cur])) st.push_back(str[cur++]);
if (cur == str.size()) st.pop_back();
else if (!st.empty() && st.back() > str[cur]) st.pop_back();
}
while (cur < str.size()) st.push_back(str[cur++]);

cout << st[pos];
}
}