[ACM] POJ 3274 Gold Balanced Lineup 解题报告, 对数组Hash

算法很简单, 就是记录各个feature的累积和数组, 数组稍作处理, 只要能够比较 [让能够相减得出答案的两个数组] 的”形状”.
比如

111      111      000
110      221<=    110
111      332      110
010      342      120
001      342      120
100      443<=    110
010      453      120

中间一列的221和443的”形状”一样, 也就是相减能得到答案, 所以稍作处理都减去最右边的数即可, 方便比较.
问题是者离散化以后也有100000的数据怎么记录, 好吧我开始用的二叉树后来发现想错了..
无耻的Google以后发现对数组Hash的方法.. 很汗颜 太洋气了.. 跑2xxMS

代码:
Continue reading

[ACM] POJ 3277 City Horizon 解题报告, 线段树+离散化

第一道线段树.. 略难。 引用忘了哪看的一句话“10亿的的数据规模是任何数据结构都无能为力的,所以必须离散化”。因为略复杂我用class写的…yzhw牛说“线段树编程复杂度太高,一般用树狀数组或者STL set。不要class,class运行爆慢” 但是哥就是用class和链表过了,怎样!! 1200ms.. 不过后来看了一下Google到用Pascal的蒟蒻牛的代码,发现树狀数组果然好用!

hw给了我篇论文,我发现现在的程度知道了一个数据结构的意思&&一些优化比如“lazy”,写出来的东西details上面大家都差不多的。比如这道题目的lazy我也是加了个-1作标签说明下面的节点需要递归确认,即这一块不是一大块一样的

优化有二:
1. compress()  每次插入完一个building以后沿着树往下看有没有标记为-1但是左右子树height(toLoad)相等的,如果有合并左右子树。实践证明这个优化对这题的数据用处不大,反而拖到了1800ms…
2. 这个厉害了,没它我算5000的数据都要跑半分钟,而还有两组40000的数据,加了这优化4w的秒出。也是刚刚那篇里提到的“观察发现,线段树的建树、统计操作已难以再优化,但插入操作却任可以优化。由于一开始房子的高度无序,所以每次插入如果全部包含不能直接赋值,还需要向下递归左右子树。其实我们可以先将房子的高度排序,然后再依次插入,这样一旦全部包含就可以直接赋值,程序的效率大大提高。这样这道题就可以AC了。”

代码:

Continue reading

网站/WordPress从虚拟主机搬家到VPS上

拖了一个月终于着手并且完成了。其实没有什么难的。但是因为我对Linux的了解非常局限,还是花了一番功夫,同时学了很多东西,在这里记一下。没有试图写一篇“手把手教你搬WP”,只是记录一些我觉得有帮助的东西,希望做同样的事情的且同样不是那么牛逼的Linux学习者们有用:)

虽说是WordPress搬家,但是任何一个小型网站搬家都差不多这样了吧,嘿嘿。

如果用cPanel和MySQLAdmin之类的东西可能就很傻瓜,但是第一cPanel太贵了(竟然要425多刀一年,我都笑了),第二VPS都买了必须必须要抓住每一个学Linux的机会啊。

过程如下(断断续续弄了好几天…): Continue reading

[ACM] POJ 2133 Cow Imposters, easy DP + BFS

简单DP + BFS
牌子之间两两组合出新牌子, 新产生的牌子只需与原始的号码两两组合即可,即,不用考虑两个新牌子组合的情况,因为两个新牌子组合的结果必然等价与一个新牌子和原始牌子组合的结果, 否则会超时。

很自然的就可以用类似BFS里的队列来做, 我由此引发的思考是, 这种新牌子和原始牌子组合到达新point, 和BFS的思想是十分一致的, 我可以把每一个原始牌子看作一个方向, 牌子号码的每一位是一维空间。 比如 01001 这个原始牌子, 对应了一个五维空间, 这个原始牌子的方向就是 ( 0, 1, 0, 0, 1 ) 。 题目就能抽象为, 给出一个B维的空间和可以走的E个方向, 问你能到达离某个点最近的维度
Continue reading

爱普生ME-30的Linux驱动, Using Epson ME-30 in Linux (Driver!)

每次想把这破玩意用起来都老费事了
Ubuntu下自动找到的驱动没用, 一切运行行云流水, 提示”processing”有模有样, 打印机也动, 灯还闪, 但是就是不进纸 -_,-

搜了一下在这里下到驱动, 有For Ubuntu 8.04的, 我目前是10.10测试OK, 唯一要注意的是安装结束提示是否设置成默认打印机, 勾选也没用, 自己手动设置一下

Every time I want to use this stupid thing it causes so much trouble
Ubuntu can find driver for it automatically which doesn’t work. Everything went fine, I was notified printing is “Processing”, and the printer also made sounds with its LED blinking, except that the paper wouldn’t go in XD

So I googled and found driver HERE. Have one for Ubuntu 8.04 (I’m 10.10 and it works fine to me). The only thing you should notice is that when the installing ends it asks whether to set ME30 to be default printer, which doesn’t work even you check it. So set it manually.

Update:
Okay… There is an issue when I tried to print images.
1. Can’t print photo, maybe too complex to render…
2. simple image can be printed, like THIS, but the color is.. not only distorted, also like toxic..

我打印图片的时候有问题..
1. 照片打印不能, 可能对于这个驱动来说渲染这么复杂的东西让它不堪重负..
2. 简单的图片可以印出来, 比如这个,  但是颜色不仅失真了而且像中毒了一样..花里糊哨的

GRE意识鲨, The Big Shark Is Watching You

The Greeyeshark 是一种生活在红宝书里以背词者意念为食的鲨鱼,这是一种非常邪恶的鲨鱼。成年Greeyeshark的身体拥有非常可观且固定的长度,为436.46米(这恰好能从头到尾覆盖50个list),这样的长度主要由它的尾巴所支持。

Greeyeshark布满全身的触须使其得以将敏锐的嗅觉深入到每个单词的字根,这种意识鲨尾部长有一只过度进化的眼睛,相对的,鲨鱼头部的双眼因其无用已经在进化树的某个节点后消失,只留下一对深深的眼窝。之所以称这只眼睛“过度进化”是因为,Greeyeshark对它的依赖使其在进化的长河中具有了初步的自我意识。虽然这种进化过程中“最近”才产生的自我意识在个体进行决策时具有的优先度较Greeyeshark自身要低,但由于其在智商上的绝对优势,鲨鱼在大多数情况(尤其是在狩猎时)下不得不依赖于尾眼进行决策。所以与其说尾眼是Greeyeshark的一部分,不如说他们是寄生与被寄生的关系。

Greeyeshark在狩猎时的反应相当迅速,当背词者出现烦躁、焦虑、沮丧或绝望等脆弱的情绪时, Continue reading

在iPad上写代码并用GCC编译

对于不想折腾就像体验一下用iPad敲敲代码的同学来说, 蓝牙键盘 + 一个叫textastic的带语法高亮的文本编辑器app就能满足你的需求

iPad十几个小时的续航和轻薄的体型, 再加上才买了蓝牙键盘, 实在是让我不能不想用它来写代码. 下面介绍我在iPad上最终成功运行Vim和编译运行代码的经验.

想要运行代码肯定首先要破解.. 苹果的销售策略里, app是不能运行脚本的, 就是说不能运行任何自定义的程序.

Apple is acting as a gatekeeper for what is and isn’t allowed on your device. I heard that Apple would never allow a scripting language to be installed on your iPad because it would allow end users to run code that they hadn’t verified.

摘自 http://jjinux.blogspot.com/2010/05/apple-ipad-and-emacs.html

越狱我就不多嘴了, 假设你已经越狱, 并且假设你的iPad是免费的 >=P

我的系统是3.2.2, 3系列的应该不会有问题, 4往上可能需要不同的fake-libgcc(我下面有提, 我觉得就是把系统环境伪装成2.0的系统从而让针对2.0系统开发的iphone-gcc可以工作)

获取终端

在cydia首页可以找到openSSH的下载链接, 下载&安装后, iPad就启动了SSH service.  装一个叫iSSH的app, 在iPad上运行Terminal的原理就是连接本地的SSH, 并不是底层破解 🙂 root的密码默认为alpine.

安装GNU GCC

根据 这篇文章, 但是此文是针对2.0系统的, 我3.0系统就纠结了很久, 最终整理如下: Continue reading