duangsuse::Echo
583 subscribers
4.12K photos
118 videos
579 files
6.13K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#cplusplus #dev #oi #algorithm
摘要:支持 iostream(cin/cout) 的语法糖 cout<1<endl;
取余操作(当然是OI应该叫模数了 但我不OI) 隐式 int mod 上下文的宏,以及 (57 / 233) % 10007 == (mint(57) / 233).v 的快速模意义(mint)运算
支持 mic::graph::directed_weighted_graph<type> 这样命名的图对象,有 resize(n); link(a,b); edges(i) 甚至 is_tree() 等操作
题外话 C++ 什么时候支持 for (auto [a,b] : iter) 这种语法了…… std::pair 可能有用吧

此外有 random 生成 int/longlong(rng.rand<t>())/tree 数据(无重生成)的
e(1,2 +1) == 2
brackets(10) // [] seq
binary_tree(10) // size 10, depth (log2 10-1)+1
e.shuffle(a.begin(), a.end());

还有 ANSI terminal (term.h) 的
(当然,基于 escape code 可以与 std::cout 配套
[fg/bg]_color(red) 定义前背景色
(no_) underline/blink 选择风格
reset/error_color 便利 span
reset_line() 删除上一行制作单行动画(如进度条)
还有 cursor::right 及 hide/show 这样的光标API;整体可配合 std::cout.flush(); 使用

最后是一个数据生成及校验的(这个目标比较有趣,但只做了类似离线OJ的使用目标)
mic::random_engine rng;
ZEN_GEN/*to data/ folder*/("[name]", 20) {/*(id, out) ->*/
int limit; switch (id){
case 1 ... 5: limit = zen::map/*_range*/(1,5, 20,100);/*with step change*/; break;
default: limit = 5000000; break;
}
out << rng(0, limit) << ' ' << rng(0, limit) << std::endl;
}
检验:
ZEN_CHECK("a.cpp", "b.cpp") {
out << e(0, 20000) << ' ' << e(0, 20000) << std::endl;
}
对比逻辑是写死的,命令行 编译 clang 差异 diff

感觉不错, Mivik 大佬的接口复用设计能力比以前强了好多啊(一个月前上传的,大概是现在才想起来发) 🤔
这用途都不止 OI 了,而且命名都很优雅
原来现在 OI 才是 C++ cutting edge 语言特性的最大利用方啊