PD大作业

据说本学期程设的大作业是写个魔方. 看到别人都开动了, laekov就有点方. 所以laekov也开动了. 为了表现laekov很弱就随手记录一下好了. 10.21 晚上9点左右开始写魔方类. 支持三轴整体转动和四种八向扭动. 其实是用两轴转动和一种扭动组合出来的. 然后发现写得不太对. debug到12点搞定. 10.22 早上有运动会. 九点左右开始写层洗ai. 中午随便吃了点然后接着写. 全程没make. 大概一点左右写完开始debug. 两点惊闻有项目. 直到晚上六点半去听心理讲座接着debug. 晚上回寝室接着debug. 很多公式和判定都有小小的问题. 不过幸好函数都分开写了, 调试还算方便. 晚上九点左右能跑过随机了. core部分基本完结撒花. 顺手完善了一下document. 准备开始看qt. 10.23 懒死了不想看qt. 晚上决定图形还是就用h5写吧. Historical Comments lyzy at 2016-10-26T20:22:21 膜Qt大神 至今不会release lyzy at 2016-10-26T20:27:43 我还是没有名字 I still have no name Todavia no tengo un nombre. lyzy at 2016-10-26T20:28:57 怎么办 What to do ¿Cómo? lyzy at 2016-10-26T20:29:21 太年轻 too young muy joven

October 23, 2016 · 1 min · laekov

轮子们

一些可以用的轮子. passportjs 用户登陆/管理模块 zmq 消息队列. 处理后台各种不能异步的请求. openjudge-sandbox oj评测沙箱(还没搞懂) react 前端框架 angularjs 更重量更强大的前端框架 bootstrap css板子 nodegit 顾名思义 grunt 开发自动化 threejs h5的3d绘图 phoria 另一个h5的3d绘图 // 似乎star比上一个多, 然而没有文档, 玩ball喽 // 开始考虑要不要重写srk了然而没有时间>_<

September 19, 2016 · 1 min · laekov

人类为什么要自相残杀

这是一篇乱七八糟的瓦尔登湖读后感. 可能要花很多天才能写完>_< 一湖一林一屋一人, 就是一个世界. 人们常常抱怨这个世界过于喧嚣, 却没有发现世界的喧嚣源于自己的索求. 如梭罗自己所实验的, 如果你不需要整日辛勤劳作开荒种田, 你就不需要厚实的衣服鞋子. 如果你不需要为了咖啡和茶而赚钱, 那你就不需要用它们来支撑你的体力. 正所谓世上本无事, 庸人自扰之. 虽然东西不同, 但是梭罗的思想和中国古代的道家不谋而和. 人类的麻烦都是自找的. 我们明明可以选择一种悠闲而优雅的生活方式, 浪迹山林, 仰观蓝天, 坐看清湖. 然而啊, 存在即合理. 为什么人类是这样而不是那样啊? 明明全人类都可以退隐山林, 回归原始人. 即环保, 又悠闲. 然而, 发展是人类的必然趋势.所以我们必然也必需社会化, 工业化, 以及未来的信息化, 宇宙化. 如果不求上进, 和那些动物一样只会吃吃吃睡睡睡, 那么人凭什么能有今天如此悠闲的生活? 上进是人类的必需品. 环保, 回归, 可以是人类的幻想, 也有如作者一般的人会追求它, 赞扬它, 但是他们永远只能是少数. 另一方面讲, 人们从梭罗研究环保的先驱. 然而这样的环保是真正的环保吗? 未必. 真正的环保应该是尽量减少资源的浪费. 即最大化资源利用效率. 可是我们的梭罗先生呢? 伐木为柴, 折枝为箭. 他才是真正挥霍资源的人. 他所谓的情怀, 不过是文人式的矫情的无病呻吟罢了. 以上. 20160829 Historical Comments lyzy at 2016-10-26T20:21:16 膜laekov lyzy at 2016-10-26T20:21:27 hahahaha 成功了

August 15, 2016 · 1 min · laekov

CF703E Mishka and Divisors

题意: 给你n个数和一个k. 求这n个数的一个最小子集, 使得元素乘积为k的倍数, 且元素之和最小. 要输出方案. \( n \leq 10^3, k \leq 10^{12} \) 结局: 死在输出方案上了. 思路: 首先发现k的质因数不会很多, 最多有14个. 然后k的因数也不会很多. 所以就dp一下. \(f_i\)表示当前积与k的gcd为i的时候的元素个数. 然后就像个背包一样嘛. 输出方案? 记录从哪里转移来的不就好了. 然后. 考虑这个例子. 3 9 3 24 21 你会先拿24从3更新到9. 然后21就会把3和9的转移都更新. 然后就炸了. 因为3应该是从原来的状态更新的. 但是现在被覆盖了. 然后发现状态是棵树. 可以把状态可持久化记下来. 更新一个状态的时候, 不是直接覆盖, 而是新建一个状态来保证从原来的状态转移出去的情况不会出错. 这样空间复杂度应该和转移次数有关? 然后怎么就糊过去了. 另一个细节是k=1是答案不能是0. woc. 依然感觉很鬼蓄. 代码

August 7, 2016 · 1 min · laekov

由Ingress想到的oi题0

Ps: 在思考ingress自动规划连边的时候顺便想到的一个题. 题: Ingress里要连多重来刷ap. 这是一种简化的情况. 假设平面上有点(A), (B), (C_1, \dots , C_n). 其中(C_1 , \dots , C_n)在直线(AB)同侧. 要连一个多重就要选一些点( { C_{a_i} } ), 使得( \Delta ABC_{a_1}, \Delta ABC_{a_2}, \dots \Delta ABC_{a_m} ) 依次包含. 即( C_{a_i} )在( \Delta ABC_{a_{i-1}} ) 内. 然后每个(C_i)都有个权值( W_i ), 求所有方案中最大的权值和. 另: 把权值和最大改成权值积最大, 对( 998244353 )取模. 让一群人写高精去然后再随便把高精卡T掉哈哈哈哈哈哈哈. 解法: (口糊的请打脸) 大概是个dp题. 把(C_i)按照离直线(AB)的距离排序即可保证拓补序. (其实这题我觉得有意思的地方就是这个了. 然而太简单) 然后就是找平面上某个三角形里的最大(f)值. KD树搞之. (AFO太久的我已经不知道KD树是什么了. 似乎有人告诉过我KD树这么用保证不到时间复杂度.) 印象中KD树常年被用来打脸和被打脸. 也许有更方便的搞法? 然而我的数据结构实在太渣ovo. 就酱.

June 5, 2016 · 1 min · laekov

yzy的计算器

yzy给的题. 感觉挺有意思. 听说是thu的自招题. 题: yzy有个计算器, 只有一个按键. 计算器上有一个自然数n, 每按一次按键这个数就会等概率变成区间[0,n)中的一个自然数. 现在的数字是2333, yzy不停地按直到变成0. 问同时出现过999, 99, 9的概率. 解法: 首先随便想个dp类似的递推. 然后推一下前几项就发现规律了. 然后就完了. 答案是(\frac{1}{10^6}). 可以拿来出题用.

May 24, 2016 · 1 min · laekov

混乱的变加速运动位移

(madan打到一半不小心把浏览器关了) (微分方程挺有意思的. 要是暑假有人找我出oi题我就出数学题吼吼吼) 题: 一维空间里有个质点. 速度为\(v\)的时候加速度为\(-k\sqrt{a^2-v^2}\) (即与速度方向相反). 求速度从\(v_1\)变成\(v_2\)的过程中的位移\(x_m\). 其中\(0\leq v_2 \leq v_1 < a\). 歪: 仔细看看这不就是简谐振动么? mdzz题. 算都不用算随便看看就出来了. 下面的东西不用看了. 解: 根据题意列个方程. $$\frac{dv}{dt}=-k\sqrt{a^2-v^2}$$ 整理. $$\frac{dv}{\sqrt{a^2-v^2}} = -kdt$$ 两边积分. $$arcsin\frac{v}{a} = -kt + C_1$$ 顺手整理. $$v = -a*sin(kt-C_1)$$ $$t = \frac{C_1 - arcsin\frac{v}{a}}{k}$$ 再对\(v\)积分求位移. $$x=\int vdt = -\frac{a}{k} \int sin(kt-C_1)dkt$$ $$x=\frac{a}{k}cos(kt-C_1)=\frac{a}{k}cos(arcsin\frac{v}{a})$$ 再定积分. $$x_m = \int_{v_1}^{v_2}vdt$$ $$x_m = \frac{a}{k} [cos(arcsin\frac{v_2}{a})-cos(arcsin\frac{v_1}{a}) ] $$ 顺手化简. $$x_m = \frac{a}{k} ( \sqrt{1-(\frac{v_2}{a})^2} - \sqrt{1-(\frac{v_1}{a})^2}$$ $$x_m = \frac{\sqrt{a^2-v_2^2}-\sqrt{a^2-v_1^2}}{k}$$...

May 19, 2016 · 1 min · laekov

空间随机游走位移平方期望及证明

原问题: 从数轴原点开始, 每次抛一枚正反概率相等的硬币, 如果是正面就沿正方向走1单位长度, 否则沿反方向走1单位. 设走n步之后的位移为x, 求(x^2)的期望(E(x^2)). 答案是n. 即随机游走时, 位移的平方的期望为步数. 并且这个结论可以推广到k维. (因为我的三角函数太捉鸡所以只推了2维, 但是目测了一下更多维都是对的) 看了zhihu上的一篇答案是关于一维情况的证明, 我受到了启发. 链接在这. 答主用的我不认识的东西有点多. 所以他证明过的部分我还是用自己的语言重新写一遍. 设第i次移动的位移为(x_i). 引理: 对于两次不同的位移(x_i)和(x_j), ( E(x_i*x_j)=0). 这个很好想, (x_i)的有0.5的概率为1和-1, 列个分布列(雾), 答案显然为0. 证明: $$E(x^2)=E((\sum_{i=1}^n x_i)^2)$$ $$E(x^2)=E(\sum_{i=1}^n x_i^2) + 2E(\sum_{i=1}^n\sum_{j=i+1}^n(x_ix_j))$$ 后面那坨的E可以扔进里面去, 根据引理该部分值为0. 前面那部分显然有 $$x_i^2=1$$ 于是得证 $$E(x^2)=n$$ 然后是向高维推广. 这里是二维的证明. 只需要改引理. 对于两次不同的位移(\vec{a_i} )和(\vec{a_j} ), (\vec{a_i} \cdot \vec{a_j} = 0 ) 证明: 设两个向量的角度分别为( \theta_i )和( \theta_j ). $$ \theta_i , \theta_j \in [0, 2\pi) $$ 因为它们都是单位向量, 所以 $$\vec{a_i} \cdot \vec{a_j} = cos(\theta_i - \theta_j) $$...

April 17, 2016 · 1 min · laekov

MathJax简单配置

在网页上写数学公式怎么少得了MathJax. 然而这玩意因为功能复杂所以比showdown之类的库要难配置一些. 首先从Github上把它clone下来. 然后发现这玩意真的好大. 后来发现是有一堆迷之png. 别人家的cdn的速度从我这来看都不怎么样, 所以还是只能扔到自已的server上. 最简单的用法就是在html head里加一行 <script src='xxx/MathJax.js?config=default'></script> 然后它就会用默认配置在网页加载的时候把那些玩意给转换了. 这里有一个config的文件可以选择. 在unpacked里的default.js里有很详细的说明. (虽然是英文的) 看上去能用了? 然后问题来了. 我的前端是先加载网页框架, 再用js去加载内容, 然而内容加载出来的时候MathJax已经把活干完歇菜了. 显然应该有什么控制单元能随时更新某个element. google了一下发现MathJax有个子类控制单元叫Hub. Hub有个方法叫Typeset, 能重新检查页面. 于是这么写? $.post("xxx", {xx}, function(res) { $("#xxx").html(res.content); MathJax.Hub.Typeset(); }); 然而这样的话是不是我每加载一个listitem或者comment都要重新扫一遍整个页面啊? 卡死啦. 于是加了个triggerCount. 麻烦死了. 然后想想觉得没对, 肯定能直接改某个元素啊. 仔细看看document. Typeset([element[, callback]]) 对啊ovo可以直接指定element. 而且还各种类型都资瓷. 在类型这种问题上js比c高到不知道哪里去了. 于是代码写成 $.post("xxx", {xx}, functoin(res) { $("#xxx").html(res.content); MathJax.Hub.Typeset(getMyId()); }); 搞定啦. 然后config里还可以指定是用$$还是$之类的玩意. 然后似乎MathJax还自带Async一类的玩意? 感觉很赞.

March 20, 2016 · 1 min · laekov

二项分布方差公式证明

公式: 一枚硬币扔一次有p的概率朝上, 扔n次, 朝上次数的方差为`n * p * (1-p)\\\'. 证明: 归纳法(增量证明) 设D(n)表示扔n次时的方差. E(n)表示扔n次时的期望. P(n, i)表示扔n次, 朝上i次的概率. 对于n=1的情况显然成立. 对于n>1的情况 $$D(i)=\sum_{i=0}^{n}P(n,i)*(i-E(n))^2$$ 对于D(n+1) $$D(i+1)=\sum_{i=0}^{n}P(n, i) * (p * (i + 1 - E(p) - p)^2 + (1-p) * (i - E(p) - p)^2)$$ 再两式相减, 式子有点麻烦, 但是可以巧妙地拆开然后用平方差化简. $$D(n+1) - D(n) = \sum_{i=0}^{n}P(n, i) * p * (1-p)$$ 右边那坨是常数. 左边这坨和刚好为1. 于是 $$D(n+1) - D(n) = p * (1-p)$$ 搞定. 数学考试遇到直接背公式就好. 可以记一个简单的结论是方差与n成正比. 不知道有没有奇怪的证明方法可以直接证这个来证上面那个公式. 思考了好久才思考出这种证法ovo. mathJax还没搞定所以公式全是乱码qwq. 随便喂给一个TeX编译器应该都能看. 推荐bestcoder的这个http://bestcoder.hdu.edu.cn/latex.php

March 9, 2016 · 1 min · laekov