Orz这个词的复杂意思[z]

太强大了,佩服的五体投地,有才的人真多!!!该给自己扫扫盲了。。。

------------------------------

From:http://www.sunvv.com/joke/24806.html

Orz这个词就比较复杂了,叫做失意体前躯,用法也很多,你把下面这个帖子看完就基本知道怎么用Orz这个词了。 ^_^

=Orz=Orz=Orz=Orz=Orz=Orz=Orz=Orz=Orz=Orz=Orz=Orz=Orz=

这个符号叫失意体前屈

失意体前屈,原本指的是网路上流行的表情符号:_| ̄|○
看起来像是一个人跪倒在地上,低着头,一副「天啊,你为何这样对我」的动作,虽然简单却很传神
在初期的时候,并没有人对这个符号起个名字,失意体前屈也是后来才出现的,
据说是某个餐厅的座垫上绣着这五个字,至於再之前又是谁想到的,就不可考了。

后来,又有人发现,用简单的三个英文字也可以表现这个动作,於是 orz 就开始流行了,
后来,更有 orz 的日志软体、日志网站!
orz 真是魅力无法档啊 ... orz


各种失意体前屈的表示法
全形:
_| ̄|○ ← 右向

○| ̄|_ ← 左向

○|_| ̄ ← 逆天

半形:
STO ← 右向
OTZ ← 左向
OLS ← 左向逆天
ZJO ← 右向逆天

半形小写:
sto ← 右向
orz ← 左向
ots ← 左向逆天
z_/o ← 右向逆天

迷你形:
no ← 右向
on ← 左向
ou ← 左向逆天
uo ← 右向逆天

其他
orz 这是小孩...
OTZ 这是大人...
or2 这是屁股特别翘的...
Or2 这是头大身体小的翘屁股...
orZ 这是下半身肥大...
OTz 这是举重选手吧...
○rz 这是大头... (=。=)
●rz 这是黑人头先生...
Xrz 这是刚被爆头完...
6rz 这是魔人普乌...
On 这是婴儿... crz 这是机车骑士...
囧rz 这是念ㄐㄩㄥˇ...
崮rz 这是囧国国王...
莔rz 这是囧国皇后...
商rz 这是戴斗笠的囧...
st冏 楼上的他老婆吗...
sto 换一边跪... 曾rz ←假面超人...
★rz ←武藤游戏....
口rz ← 豆腐先生.
__Drz ← 爆脑浆...

你提到“**应该输出 orz**”,说明我们正在处理的是 **洛谷 P3366 【模板】最小生成树** 这类题目。 在该题中: > 如果图不连通(无法生成最小生成树),则输出 `orz`。 而你在之前的代码中虽然修复了大部分逻辑,但在某些情况下仍可能 **错误地输出答案而不是 `orz`**。下面我们来彻底解释:**何时应输出 `orz`?如何正确判断?** --- ## ✅ 什么时候输出 `orz`? 当且仅当: > 图中的节点无法通过选边构成一棵包含所有 $ N $ 个顶点的树 也就是:**最小生成树的边数不足 $ N - 1 $ 条** 👉 所以我们需要统计成功合并的边数 `cnt`,最后判断是否 `cnt == n - 1` 如果不是 → 输出 `orz` --- ## ❌ 常见错误写法导致“本该输出 orz 却没输出” 比如下面这段逻辑就有问题: ```cpp int cnt = 0; for (int i = 0; i < m; ++i) { int u = e[i].from, v = e[i].to; int pu = find(u), pv = find(v); if (pu != pv) { pre[pu] = pv; ans += e[i].w; cnt++; // 没有 break 或最终检查 } } // 忘记判断 cnt 是否等于 n-1 cout << ans << endl; // 错!图可能不连通 ``` 即使图是断开的(如两个孤立点),也会输出一个部分和 → ❌ --- ## ✅ 正确做法:必须判断最终 `cnt == n - 1` ### ✔️ AC 风格完整代码(保证能输出 `orz`) ```cpp #include <bits/stdc++.h> using namespace std; const int MAXN = 200000 + 10; int n, m; int pre[MAXN]; struct Edge { int from, to, w; bool operator<(const Edge& other) const { return w < other.w; } } e[MAXN]; int find(int x) { return pre[x] == x ? x : pre[x] = find(pre[x]); } void Kruskal() { sort(e, e + m); for (int i = 1; i <= n; ++i) pre[i] = i; long long ans = 0; int cnt = 0; // 已选边数量 for (int i = 0; i < m; ++i) { int u = e[i].from, v = e[i].to, w = e[i].w; int pu = find(u), pv = find(v); if (pu != pv) { pre[pu] = pv; ans += w; cnt++; if (cnt == n - 1) break; // 提前结束 } } // 判断是否形成了一棵完整的生成树 if (cnt == n - 1) { cout << ans << '\n'; } else { cout << "orz\n"; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m; for (int i = 0; i < m; ++i) { cin >> e[i].from >> e[i].to >> e[i].w; } Kruskal(); return 0; } ``` --- ## 🧪 测试案例:应该输出 `orz` ### 输入: ``` 3 1 1 2 5 ``` - 只有 1 条边,连接了 1 和 2 - 节点 3 完全孤立 - 无法构造包含 3 个节点的生成树 ✅ 正确输出: ``` orz ``` 因为 `cnt = 1`,但需要 `n-1 = 2` 条边 → 不足 → 输出 `orz` --- ## 🔍 如何验证你的代码能否正确输出 `orz`? 你可以用以下测试数据验证: ### Case 1: 不连通图 → orz ``` 4 2 1 2 10 3 4 20 ``` → 两个独立边,无法连通全部 4 个点 → 输出 `orz` ### Case 2: 连通图 → 输出总权值 ``` 4 3 1 2 1 2 3 2 3 4 3 ``` → 形成链状连通图,共 3 条边(=4-1)→ 输出 `6` --- ## ✅ 总结:确保输出 `orz` 的关键点 | 条件 | 是否满足 | |------|---------| | ✅ 使用变量 `cnt` 记录实际加入 MST 的边数 | ✔️ | | ✅ 循环结束后判断 `if (cnt != n - 1)` | ✔️ | | ✅ 在不满足时输出 `"orz"` 而非任何数字 | ✔️ | | ✅ 并查集初始化正确(从 1 到 n) | ✔️ | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值