【OJ比赛日历】快周末了,不来一场比赛吗? #03.02-03.08 #11场

本文概述了2024年3月期间的编程比赛安排,包括来自Kaggle、天池、LeetCode等平台的ACM和IOI赛制比赛,如Codeforces、AcWing、AtCoder等的比赛详情和时间。

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注!


以下信息仅供参考,以比赛官网为准

目录

2024-03-02(周六) #4场比赛

2024 ICPC Asia Pacific Championship - Online Mirror (Unrated, Online Mirror, ICPC Rules, Teams Preferred)
🖥 Codeforces · ⚖️ ACM赛制
🥳 10:05开始 · ⏳ 时长5h
https://codeforces.com/contestRegistration/1938


第 145 场周赛
🖥 AcWing · ⚖️ ACM赛制
🥳 19:00开始 · ⏳ 时长1h 15min
https://www.acwing.com/activity/content/3780/


AtCoder Beginner Contest 343
🖥 AtCoder · ⚖️ ACM赛制
🥳 20:00开始 · ⏳ 时长1h 40min
https://atcoder.jp/contests/abc343


第 125 场双周赛
🖥 Leetcode · ⚖️ ACM赛制
🥳 22:30开始 · ⏳ 时长1h 30min
https://leetcode.cn/contest/biweekly-contest-125


2024-03-03(周日) #3场比赛

第 387 场周赛
🖥 Leetcode · ⚖️ ACM赛制
🥳 10:30开始 · ⏳ 时长1h 30min
https://leetcode.cn/contest/weekly-contest-387


The 1st Masters Championship-qual-
🖥 AtCoder · ⚖️ ACM赛制
🥳 12:00开始 · ⏳ 时长6h
https://atcoder.jp/contests/masters-qual


牛客周赛 Round 35
🖥 牛客(Nowcoder) · ⚖️ IOI赛制
🥳 19:00开始 · ⏳ 时长2h
#牛客系列赛
https://ac.nowcoder.com/acm/contest/76133


2024-03-04(周一) #无比赛

2024-03-05(周二) #1场比赛

Codeforces Round 932 (Div. 2)
🖥 Codeforces · ⚖️ ACM赛制
🥳 22:35开始 · ⏳ 时长2h
https://codeforces.com/contests?complete=true


2024-03-06(周三) #1场比赛

Starters 124
🖥 Codechef · ⚖️ IOI赛制
🥳 22:30开始 · ⏳ 时长2h
https://www.codechef.com/START124


2024-03-07(周四) #无比赛

2024-03-08(周五) #2场比赛

【LGR-178-Div.4】洛谷入门赛 #21
🖥 洛谷 · ⚖️ IOI赛制
🥳 19:00开始 · ⏳ 时长2h
#Rated #官方比赛
https://www.luogu.com.cn/contest/159723


牛客小白月赛88
🖥 牛客(Nowcoder) · ⚖️ ACM赛制
🥳 19:00开始 · ⏳ 时长2h
#小白月赛 #牛客系列赛
https://ac.nowcoder.com/acm/contest/75771


参考资料

[1] 

CompHub: https://comphub.notion.site/CompHub-c353e310c8f84846ace87a13221637e8

是的,**你可以通过 `#define x first` 将 `first` 简写为 `x`**,但这属于宏替换(Macro Substitution),它会在预处理阶段无差别地将代码中所有 `x` 替换为 `first`。然而,这种做法虽然技术上可行,但**非常不推荐**,原因如下。 --- ### ✅ 技术上:可以这样用 ```cpp #include <iostream> #include <map> using namespace std; #define x first #define y second int main() { map<string, int> m; m["Alice"] = 25; auto it = m.find("Alice"); if (it != m.end()) { cout << it->x << ": " << it->y << endl; // 输出: Alice: 25 } return 0; } ``` ✅ 编译运行正常,输出: ``` Alice: 25 ``` 因为预处理器会把 `it->x` 替换成 `it->first`,`it->y` 替换成 `it->second`。 --- ### ⚠️ 但是:为什么不推荐? #### 1. **宏是全局的、无作用域的** 一旦你写了 `#define x first`,这个宏会影响整个文件(甚至被其他头文件包含时也会生效),可能导致命名冲突。 例如: ```cpp #define x first void func() { int x = 10; // 这里的 x 会被替换成 first → 变成:int first = 10; ❌ 编译错误! } ``` 这会导致语法错误或难以调试的问题。 #### 2. **降低代码可读性和可维护性** 其他开发者看到 `it->x` 会困惑:“x 是哪里来的?是成员变量吗?” 而 `first` 是标准名称,清晰明了。 #### 3. **容易误用在非 pair 类型上** 如果你不小心对一个不是 `pair` 的对象使用 `.x`,编译器报错会很奇怪: ```cpp pair<int, int> p = {1, 2}; p.x = 10; // 实际是 p.first = 10,能工作,但语义混乱 ``` 但对于普通结构体或类就不适用了。 #### 4. **现代 C++ 提供更好的替代方式** --- ### ✅ 推荐替代方案 #### ✔ 方案 1:使用结构化绑定(C++17) ```cpp auto it = m.find("Alice"); if (it != m.end()) { const auto& [key, value] = *it; cout << key << ": " << value << endl; } ``` 更清晰、安全、现代。 #### ✔ 方案 2:使用别名或局部变量(避免宏) ```cpp auto& key = it->first; auto& val = it->second; cout << key << ": " << val << endl; ``` 简洁且类型安全。 #### ✔ 方案 3:如果用于竞赛编程,短期使用可接受(但仍需谨慎) 在 OJ(如 LeetCode、Codeforces)中,有人为了打字会这么写,但仅限于短程序: ```cpp #define fi first #define se second ``` 然后写 `it->fi`, `it->se`,比 `x/y` 更安全,不易冲突。 --- ### 🔚 总结 | 方法 | 是否推荐 | 原因 | |------|----------|------| | `#define x first` | ❌ 不推荐 | 容易引发命名冲突,破坏代码可读性 | | `#define fi first` / `se second` | ⚠️ 竞赛可用,项目禁用 | 速输入,但仍是宏风险 | | 结构化绑定 `[key, value]` | ✅ 强烈推荐 | 清晰、安全、现代 C++ | | 局部引用 `auto& key = it->first` | ✅ 推荐 | 明确、高效 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值