/tmp/duangsuse.sock
23 subscribers
303 photos
3 videos
92 files
337 links
从 duangsuse::Echo (@dsuse) 跟进出来的分支,将在作者恢复原帐号访问的时候合并删除。
Download Telegram
Forwarded from Deleted Account
劳资 TMD 现在连 i[n/i] 这个表达式都不知道是啥意思,为啥要莫名其妙加个括号...
https://latex.codecogs.com/png.latex?a\mod{b}%20=%20a%20-%20b[\frac{a}{b}]
Forwarded from Deleted Account
我去,数学还有这操作符
劳资 1/4 高三的水平不知道
Forwarded from Deleted Account
我还以为是渲染错了
Forwarded from Deleted Account
为啥 [a/b] 还得乘一个 b 啊... 哦 是我变形没变好 (汗)
Forwarded from Deleted Account
🌚💦 没有注意到这是定义部分...
奉自己之名来这里讲一下几个数学的模板 #Math

当然其中涉及的主要是程序推导(分析)和变换的问题,毕竟我不是数学爱好者... 改天我问 @LEXUGE
Forwarded from Deleted Account
其实如果不单单从 OI 上来看,我建议这种比较数学的解决方案,如果命名是这样的话还是把原公式写注释里好
Forwarded from Deleted Account
从代码风格上,我想给点建议:

1. 如果把那个没用的 #define INF 删掉,代码会减少一行
2. 既然把 long longunsigned long long 当成基本的数值使用,不如加 typedef unsigned long long num;
3. #define endl 这个定义是干什么的... 开发环境是 MSVC(CRLF)? 终端是 Cygwin 的 terminal(LF)?
4. mod 最好用 const static num _10e9p7 = (10^9)+7; 或者起个更好的名字,这个名字有点模糊(而且映射到数学公式上就混淆了)
5. if (a % 2 == ) { a /= 2; } else { b /= 2; } 的逻辑可以抽提一下,并且缩进没必要那么规范(虽然好像抽提定义的话重用的不多...)

#define mod %
static inline bool idivable(n, m) { return n mod m ==0; }
static inline bool idiv2(n) { return idivable(n, 2); }
if (idiv2(a)) { a /= 2; } else { b /= 2; }

6. 利用结合律提升数值稳定性的计算可以做一个宏抽提
7. C++ 一般使用 static_cast<new_type>(o) 而不是 (new_type) o 做类型转换
8. (n*(n+1)>>1) 如果是想表示 (n * floor(n+1) / 2) ) 的话可以用宏定义或者 inline 函数抽提来明确语义


最后再膜一下 OI 大佬(
Forwarded from Deleted Account
我真的不敢想像,即使是天才们,他们的直觉就有那么强,适合各种非常模糊的名字和定义?
Forwarded from Deleted Account
其实我不是很能理解,因为我目前还是只能看比较清晰的逻辑的,复杂一点不那么明确就做不到
Forwarded from Deleted Account
如果真的很强的话,是不是就能完全忽视这些无关紧要的代码风格相关的东西了?
Forwarded from Deleted Account
可是我觉得直觉很重要,我觉得奇怪的是,他们的直觉能那么饶
Forwarded from Deleted Account
当我考虑方法的时候,我就会这么想
Forwarded from Deleted Account
我的直觉是类似这种的,非常 immediate
Forwarded from Deleted Account
当然也的确是有不好说的问题
Forwarded from Deleted Account
可是我总觉得... 一切尤其是数学本身应该是简单,六岁小孩都可以理解的

这里只是说如果要尽可能做到最好的话该怎么学习,就是把所有东西化为直觉
Forwarded from Deleted Account
过了一天我对那两个 sum 的直觉稍微好一点了...
那个 sum(i, n) sum(j, m) ija = sum(i,n) sum(j,m) a 虽然我没有模拟但感觉上好像是一样的,此时我把 Sigma 考虑成 accumlator + 循环,重复其 inner 子式子,大概知道可能是一样的,虽然不准确但可以作为猜测

然后因为有两个 mod 的缘故,最后一个 mod 好像是死代码,因为 mod 有属性

b<a⇒rem(b,a)≡b∧div(b,a)≡0

且从那 n m 相关的 value range 看好像不会有大于 10^9+7 的情况出现

后来看发的题解后知道其实本来还要多一层考虑,两个 sigma 乘了以后还是可能出现 > 10^9+7 的情况...
应该是得先无视常量叠加,然后拆循环,算 value range,再去做别的变形