Awesome 3 里可以启用 debian menu,方法是新建一个带 x 属性的文件
1 | #!/usr/bin/install-menu |
放在 ~/.menu-methods下,然后运行
1 | $ update-menus |
这样就会在 ~/.config/awesome 下面建立 menu.lua,然后在 lua.rc 里做如下修改:
1 | -- Load Debian menu entries |
Awesome 3 里可以启用 debian menu,方法是新建一个带 x 属性的文件
1 | #!/usr/bin/install-menu |
放在 ~/.menu-methods下,然后运行
1 | $ update-menus |
这样就会在 ~/.config/awesome 下面建立 menu.lua,然后在 lua.rc 里做如下修改:
1 | -- Load Debian menu entries |
1 | Greedy Island |
有 n (n <= 100100) 张卡片,卡片 i 有 a_i b_i c_i 三个属性,选则不超过 A 张用于提升属性一,不超过 B 张提升属性二,不超过 C 张提升属性三,每张卡片只能用于提升一种属性。求三种属性提升值之和的最大值,若有多解,最大化 sigma(S_i),S_i = A_i + B_i + C_i。
容易构建最大费用最大流模型,但顶点数很多,需要优化。 以 (A_i, S_i) 为关键字,保留最大的 A+B+C 张卡片 以 (B_i, S_i) 为关键字,保留最大的 A+B+C 张卡片 以 (C_i, S_i) 为关键字,保留最大的 A+B+C 张卡片
1 |
|
题目大意:有一个长为 N 的整数数列,每次可以把一个数增减一,求最少次数使得有连续 K 个数相同。 下面程序用 Size balanced tree 实现,卫星数据是子树节点数和子树关键字和。
1 | #!/usr/bin/env python |
动态规划, \(F_m\)表示当前要做选择的奶牛在可以选择\(w_{m\ldots n-1}\)时可以获得的最大值。 \(S_m\)表示当前要做选择的奶牛做完\(w_{m\ldots n-1}\)的最优决策后,下一个奶牛可以取得的最大值。
1 |
|
根据USACL Analysis(后附),根据一个格子周围格子的布局,先把一些点转换为A,然后绕着A走一圈。
1 |
|
先把题目中给出的树有根化,对于一个顶点u,如果它有不超过K/2个孩子还未被分配, 可以把它们中最多2*K个在u处连接起来。如果有孤立孩子并且还未配对完K对孩子, 那么只能和u子树外的顶点配对,这相当于u是其parent的未分配顶点。
1 |
|
1 | USACO JAN10 Problem 'island' Analysis |
随机生成一个迷宫 
1 | #!/usr/bin/env python |
现在知道这个算法的名称了:recursive backtracking,可以参见拙作完美迷宫生成算法
设盘子编号为
输出初始局面(所有盘子都在1号柱子)到终止局面(所有盘子都在3号柱子)的最优方案。
时间复杂度:
输出最优方案中某一局面之前经过的步骤数。 时间复杂度:
1 |
|
输出当前局面(不一定是最优解的中间步骤)到终止局面的最优方案。
时间复杂度:
1 |
|
输出当前局面下,把所有盘子移动到任一根柱子的最优方案。 时间复杂度:Ο(2^N)
1 |
|
输出当前局面下,把所有盘子移动到任一根柱子的最优方案所需步数。
时间复杂度:
易知,必定把
注意到如果
之所以要移动
1 | #include <stdio.h> |
总结一下,对于求方案的问题,因为最坏情况下步骤数可以达到
对于求步骤数(无须输出方案),以上源码时间复杂度都是
language: C99 + GTK+ algorithm:对棋盘各个格子设置权值,计算总值 icon:程序截图 license: GNU General Public License v3 revision control: Mercurial bead-black.png bead-white.png texture1.png texture2.png: 8pm(http://hi.baidu.com/eightpm) 提供
gdk透明贴图好像有点麻烦(以前 Win32 API 用得是 TransparentBlt)

菜单采用GtkUIManager,可以看demo:/usr/share/gtk-2.0/demo/ui_manager.c的透明贴图:
1 | void pixbuf_transparent(GdkPixbuf *dst, const GdkPixbuf *src, gint dstx, gint dsty, guint transcolor) |
语言:C99 图标是随手涂鸦的 界面部分抄袭 http://sourceforge.net/projects/tictactoegtk/(作者:Obada Denis(obadadenis@gmail.com),javajox(javajox@users.sourceforge.net)) 算法是 min-max search 版本控制系统采用 8pm 推荐的 Mercurial 项目首页:http://code.google.com/p/rayup/ #里面还有些其他乱七八糟的东西 Download:hg clone https://rayup.googlecode.com/hg/ rayup 没有安装 Mercurial 的话,可以访问 http://code.google.com/p/rayup/source/browse/,手动下载一个个文件……

似乎是某个TopCoder SRM的题目。
N 个球,有一个是坏的,坏球重量与好球不同(略轻/重于好球)。有一个天平,可以告知左右两边孰重孰轻,最小化最坏情况下称量次数,给出称量方案。下面讨论该问题的一个扩展——如何通过已知信息(即之前称量结果,之前的称量结果可能不是最优的)选择下一步称量方案,最小化最坏情况下的称量次数。
根据已有信息把所有球分为4类: - 肯定是好球 - 不可能比好球轻(不能确定是否为坏球) - 不可能比好球重(不能确定是否为坏球) - 不知道任何信息
每个球必定属于以上四类中的某一类。我们只需知道每一类的数目即可,具体编号无关紧要。令\(s[nh][nl][nu]\)表示有\(nh\)个1类球,nl 个2类球,nu 个3类球,最坏情况下需要称量的次数。枚举一边放置的各类型球数 lh(1类),ll(2类),lu(3类),枚举另一边放置的各类型球数 rh(1类),rl(2类),ru(3类),re(0类)。如果两边都有0类球,那么我们可以在两边各移去一个。我们可以保证0类球只出现在一边,不妨设为 rh(1类),rl(2类),ru(3类) 一边。