摘要: 首先是O(nlogn) 的最长上升子序列,我居然一直不会。。。。(雾)。 用一个maxv[i] 数组表示长度为i的上升子序列的第一个数的最大值,这样就可以二分求当前上升子序列的长度了。 注意这道题字典序最小是指下标。 #include #include #include using namespace std; const int maxn = 10000 + 10; const in... 阅读全文
posted @ 2016-04-10 21:18 invoid 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 弦图最小染色。MCS(最大势)算法。定理为最小染色数 等于 最大团(最大完全子图(任意俩个节点都有一条边相连))。 1.必须是弦图。 弦图:对于任意长度大于3的环都存在弦的图。 弦:连接环上俩个不相邻节点的边。 反例:比方说5边形,它的最大团的节点数为2,但需要3种颜色才能染。 2.贪心,每回选已经被染色的邻接点数目最多的节点(编号最小)染色。 反例: 1——4——3——2,染完1以后应该... 阅读全文
posted @ 2016-04-10 18:14 invoid 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 最大流,首先建模。 设每个石柱分为出节点和入节点。 1.设一个虚拟源点,与每个初始有蜥蜴的石柱连一条容量为1的边。 2.设一个虚拟汇点,与每个能跳出来的石柱连一条容量为INF的边。 3.每一对距离小于d的点,出节点和入节点连一条容量为INF的边。 4.每个点的入节点和出节点连一条容量为石柱高度的边。 #include #include #include using namespac... 阅读全文
posted @ 2016-04-10 10:03 invoid 阅读(196) 评论(0) 推荐(0) 编辑