悲伤的故事

今天老友跟女神走一路,赶着上课的时候老友喊了我一声。 我回头看了一眼,因为要迟到了就没回应。 老友后来跟我说,女神问她 “你刚刚喊的人是谁啊” 完。…

POJ 1991 Turning in Homework

/doge薛昊老是偷我题做,最近我也就拿他博客上的题来练练手。其中这道题真的什么思路都没有,这个区间DP的套路我还真没碰到过。 这是一个大区间推小区间的套路。 题意: 小明要在某层楼的各个老师那里交一大堆作业,但是小明来早了,老师还没上班,他站在这层楼的最左边,告诉你每个老师的上班时间,最后要在某个给定位置下楼,问最少时间。 思路: shit,完全是看博客,看代码敲的。 一个比较困难的点在于给定离开地点,算了,不装了,就算取消这个条件我也写不来…… 明确可以用dp求解,首先按照位置优先开门顺序次优的顺序排序,设三维数组 $dp[l][r][k]$。 当 $k=0$ 时,表示只有 $(l,r] $ 区间内的作业没有交。 而 $k=1$ 时,表示只有 $[l,r) $ 区间内的作业没有交。 而我们的其实状态$dp[1][n][0/1]…

ShadowSocks-Qt5 崩溃解决记录

自从把Linux强制全局代理很长时间了,已经不知道怎么改回去了…… 结果今天ShadowSocks-Qt5 崩溃就GG了,除了让终端unset意外,其他就没有上网办法了。 因为本人使用的 Arch ,各种软件包更新的快,要是等到作者来解决这个问题可能要等很长时间…… 终端错误提醒 ss-qt5: error while loading shared libraries: libbotan-2.so.2: cannot open shared object file: No such file or directory 找了一下的确没有。 sudo find / -name "*libbotan*" [sudo] password for key: find: ‘/run/user/1000/gvfs’: Permission denied /usr/lib/libbotan-2.so…

HihoCoder 1252 Kejin Game

网络流建图神题!!! 同时也是2015年北京现场赛的金牌题,虽然我不可能去挑战金牌,但是也只有做这种神题,尽管不是自己想得,但A了之后仍然充满了满足。 题意: 给你一个DAG,表示一个游戏的技能树,也就是说某一些技能存在前置技能,但实际上这是为氪金大佬准备的游戏,有钱是真的可以为所欲为的,大佬们可以选择花钱直接无视所有前置技能直接习得某一个技能,也可以消除掉两个技能之间的依赖关系。 现在某个节俭的大佬想要学某一个技能,问最小花费。 思路: 说实话这道题一眼真的很容易想到图上DP,但是存在可以消除一个依赖的权利,使得DP存在后效性。 正解是最小割建模,这个最小割建模真的是非常巧妙: 1. 拆点建图,u -> u’ 的容量是直接氪金习得这一技能的花费 2. 如果u,v存在依赖关系 u -> v ,建边 u’ -> v ,容量为消除这个依赖的费用 3. 将源点与每一个技能连边,容量为按技能树学习的费用。 4. 将所要求的技能与汇点相连,容量为 inf 最后跑一遍最大流就是答案。 网上很多题解到这里就没了,也没有一个像样点的解释。 对于学习技能来说,…

HDU 5556 Land of Farms 附最大团最终模板

一眼以为是状压DP…… 但是仔细读题的话,会有一个致命条件是状压无法解决的。 偷看了一下薛昊的博客,回去路上还跟我说二分图不可能建出来,结果到头来却用HK写这题。 题意: 给你一张图,是矩阵的形式,在满足条件的情况下你要选择尽可能多的格子。 其条件如下 * 如果选中一个格子,这个格子是数字,则相同数字的格子立刻被选中。 * 每个被选中的格子不允许其四个相邻的格子中 存在被选中且与其不同的格子 思路: 实际上这道题的确很想状压,如果把题目中的第一个条件改成,与其选中格子联通且数字相同的格子立马被选中的话,状压可解。但事实并非如此。 其实可以把所有是数字且相同的格子作为一个点,每个 . 也作为一个点,再将其与四周连边,按题意来的话,略加思考,其实就是个最大独立集的裸题。 但是关键还是需要转化出来啊…… 坑点,答案最小为 1 。 AC Code #include #define each(i, n) for (int(i) = 0; (i) < (n); (i)++) #define reach(i,

Dancing Link X 求精确覆盖与重复覆盖入门

DLX算法入门文……主要说一下我对这个算法的理解。 问题描述 精确覆盖问题: 以矩阵模型介绍,给你一个矩阵,其每个格子的权值范围是 [0,1] ,让你选出若干行,使得选出的行的 1 覆盖了一行的所有格子,且不能有重叠。 重复覆盖问题: 与精确覆盖问题基本相同,但是所选的行集合中,同一列的 1 允许重叠。 这个问题当然不可能让你输出可行方案,输出的应该是行数最小的方案。 算法理解 精确覆盖和重复覆盖都是NP问题,通常的,我们只能通过搜索去解决它。事实上DLX算法也是基于搜索算法。这里放上我的学习博客,里面讲的非常详细,一般人写的博客已然不会超过他。 所以我写这个个人理解其实主要是给自己看的。 首先最容易的当然是 ( 2^{row} ) 的最简单的裸搜,这谁都想得到……而且复杂度很高…… 其实当我们选中一行时,对于这一行的每一个 1 元素,含有与选中行同一列的 1 元素的行自然是不能选的,与此同时对于选中行每一个 1 元素,它所在的列其实我们也已经不再需要去考虑它们,因此,我们可以把这些元素删除,…

第一个Rails半成品的一些经验

简单说就是数据库课设,趁我现在保留着对整个程序的开发过程,这里简单阐述一些过程。 因为以前忘的多了,加上比赛啊,什么的,有点赶,还有两个功能没能实现,不过勉强还是能拿出手 主要学习来源 向作者ihower致敬 顺便在最前面展示一下成果主页 Rails 核心思想 众所周知,Rails 以开发速度闻名,我写完统计了一下代码量,所有代码应该不包含注释也不过 400 行多一点。 而其核心思想在于规定化,也可说是标准化。用一些内置函数去生成代码。 举个例子,在路由(Route)上,根据MVC规则,每一个网址都应该有一条路由与之相对应。rails则使用标准化的RESTful 而因为是函数,所以它的参数都必须与其相对应,所照成的缺陷也很显然,内置函数使用上限不足,完美自定义的网站仍需要自己去架构。为此Rails 也构造了更多的内置函数,为的是提高总体使用上限。当然所造成的结果会是有一些函数的作用重叠。但这并不影响,反而完全符合Ruby的哲学。 Rails 各目录简介 * app/assets 保存着各种样式文件 包括css,js,和一些图片…

CodeForces 855 C Helga Hufflepuff's Cup

前几天的上分场的树形DP 我敢说思路和我当时想得已经一模一样了,还有半个多小时的时候,gou bi 带鱼说把题目给他看一下,然后立马得出,树形DP解不了,肯定是树分治! 当时我在一个子问题上走不出来,于是就信了,然后开始划水…… md 题意: 给你一棵树,要你给树上的每一个节点赋值,赋值存在范围,再给你一个特殊值,除开特殊值意外的数值赋值次数不限,但是特殊值的相邻节点的值不能是特殊值,也不能是比特殊值大的值。 问方案数。 思路: 首先值得注意的是,特殊值赋值次数不超过10,这是一个重要突破口,这使得树形DP的解法存在可能性。 简单说就是在每个节点都保存当前节点为根节点的子树分别含有 [ 0, 10 ] 个特殊值的方案数。 但这还不好决策转移,我们还需要对当前值的范围作为状态进行判断。 我在比赛中只用了,当前值为特殊值,和不是特殊值两个状态,但是现在看了其他人的代码,发现三个状态更容易。 当前节点赋值小于特殊值,大于特殊值,等于特殊值。这样就很好转移,不细说,看代码都能秒懂。 我在比赛时候被卡的子问题是这样的,对于计算当前子树的特殊值数量为 n 的时候…