2014-12-13 Xie Jingyi
假设字体文件夹为:~/Fonts。执行: sh sudo mkdir -p /usr/share/fonts/myFonts sudo cp ~/Fonts/*.ttf /usr/share/fonts/myFonts/ sudo chmod 644 /usr/share/fonts/myFonts/*.ttf cd /usr/share/fonts/winFonts/ sudo mkfontscale #创建雅黑字体的fonts.scale文件,它用来控制字体旋转缩放 sudo mkfontdir #创建雅黑字体的fonts.dir文件,它用来控制字体粗斜体产生 sudo fc-cache -fv #建立字体缓存信息,也 继续阅读 »
2014-12-13 Xie Jingyi
答案来自StackOverflow: sh sudo dpkg --remove --force-remove-reinstreq 继续阅读 »
2014-11-29 Xie Jingyi
各种坑爹,我也不知道为什么: sudo gedit etc/apt/apt.conf.d/00aptitude 最后加一行:Acquire::CompressionTypes::Order "gz"; 继续阅读 »
2014-11-28 Xie Jingyi
修改/etc/mysql/my.cnf: [client] default-character-set=utf8 [mysqld] character_set_server=utf8 [mysql] default-character-set=utf8 然后:sudo service mysql restart 继续阅读 »
2014-11-17 Xie Jingyi
现在算起来,至少有220分是不应该丢的——已经接近我的得分了,都是由各种脑残的错误引起的。总之,经历了这一切,我都早已习惯了。过去的事只能让它过去了,重要的是:经历了这一切,我总要明白一些什么。 生活大爆炸版剪刀石头布 题目链接:Link 得分:100 这题是真正的大水题,当然也是我唯一一道满分的题(欲哭无泪)。不说了,模拟就是了。 联合权值 题目链接:Link 得分:40 这题不难,关键是要将无根树转化成为有根树,做一次DFS。事实上,两个距离为2的节点,要么一个是另一个的祖父节点,要么两个节点是兄弟关系。一方面,我们在DFS时先求当前节点与祖父节点产生的联合权值(如果有的话);另一方面,遍历当前节点的子节点。对于一个 继续阅读 »
2014-11-02 Xie Jingyi
真是巧妙的算法! 比起树上倍增,Tarjan算法实现起来更为简单,一个DFS加并查集即可。缺点便是:需要先把所有的查询都读进来,并且要储存结果。复杂度为O(n+q)。 Code var sets: array [1..100] of longint; visited: array [1..100] of Boolean; a: array [1..100, 1..100] of Boolean; questions: array [1..1000] of record x, y: longint; ans: longint; end; qn, n, 继续阅读 »
2014-11-02 Xie Jingyi
var a: array [1..100, 1..100] of boolean; depth: array [1..100] of longint; father: array [1..100, 0..16] of longint; n, m, i, x, y: longint; root: longint; procedure dfs(x: longint); var i: longint; j: longint; begin depth[x] := depth[father[x][0]]+1; j := 1; while 1< 0 then 继续阅读 »
2014-11-02 Xie Jingyi
问题描述:已知数组a以及若干个查询(x, y),求a[x~y]之间的最小值。 分析 不难发现:若取t使得$2^t\leq y-x+1$且$2^{t+1}>y-x+1$,则有: $$[x, x+t]\bigcup[y-t+1,y]=[x,y]$$ 运用二进制的思想,我们只需预处理出$i~i+2^k-1$之间的最小值,即可快速完成查询。设dp[i][j]为$i~i+2^j-1$之间的最小值,则有: $$dp[i][j]=min(dp[i][j-1],dp[i+2^{j-1}][j-1])$$。 Code var a: array [1..100000] of longint; dp: array [1..1000 继续阅读 »
2014-11-02 Xie Jingyi
介绍 所谓树状数组,就是将线性的数组预处理成树状的结构以降低时间复杂度。先来看一幅经典的图: 其中的a数组为原生数组,c数组为辅助数组,计算方式为: $$c_1=a_1——{(1)}{10}={(1)}_2$$ $$c_2=a_2+c_1——{(2)}{10}={(10)}_2$$ $$\ldots$$ 不难发现,c[k]存储的实际上是从k开始向前数k的二进制表示中右边第一个1所代表的数字个元素的和。这样写的好处便是可以利用位运算轻松计算sum。上代码。 Code var n, i: longint; a, c: array [1..10000] of longint; //计算x最右边的1所代表的数字。 继续阅读 »
2014-11-01 Xie Jingyi
在学习数论时我们都知道:只用2的幂次可以组合出所有的正整数。这便是二进制的魅力——状态简单而又变化万千。 引子 实际算法中,常常有一些线性的但数据量特别大的问题,如区间求和、求最小值等。很多时候,为了把时间复杂度从$O(n^2)$甚至更高的地方降下来,我们需要对数据进行一些预处理,以提高计算的速度。在这其中,有很大一部分是来自二进制运算特点的启发。 目录 树状数组 RMQ LCA&树上倍增 继续阅读 »