上一页 1 ··· 14 15 16 17 18
摘要: 这道题分为俩步,第一是求最大流,第二是在第一问的残量网络上求最小费用流。 建图时俩个点直接连2条边,一条容量为f[i],费用为0,另一条容量为inf,费用为c[i].这样就可以跑俩个算法了 第二问设一个虚拟源点S与1连容量为k,费用为0的边,n与一个虚拟汇点T连容量为k,费用为0的边。这样一直跑,最 阅读全文
posted @ 2016-04-11 21:07 invoid 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 首先是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) 编辑
摘要: 我抄的,lct。 转疯了。。 先建图保存父节点。剩下我也看不懂。。。先留个坑日后再补吧//能补上。。?。。。 #include #include #include using namespace std; const int maxn = 100000 + 10; char op[10]; int a,b,c,n,m; struct Edge { int to,next; } ... 阅读全文
posted @ 2016-04-09 21:34 invoid 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 一道平衡树实现的名次树,用了treap实现。 1.rand()产生的数可能比INF大,很可能改变树的结构。 2.删除时先递归,然后再删除自己,实现就变得简单多了。 3.因为很多情况树会是空的,所以设了一个root虚拟节点。设指针时一定要new一个出来。 就这样,其实水题一道。 #include #include #include using namespace std; const... 阅读全文
posted @ 2016-03-27 12:33 invoid 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 每个数i作为约数的次数为n/i。累加即可,复杂度O(n)。 阅读全文
posted @ 2016-03-26 09:50 invoid 阅读(113) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18