摘要:
两个知识的本质是一样的。都是每条边有k个权值(一般k为2),现在要取一个边集M使得其将所有点连通,并使每一种边权的总和的乘积最小。不同的是一个是生成树一个是匹配。 对于这一类问题,我们都可以把每种方案的x之和与y之和作为它的坐标(x,y) 要让乘积最小,那么可能的方案的坐标一定在一个下凸壳上。 首先 阅读全文
摘要:
这周一直在看15年的icpc题。对于我们的水平来说,一场比赛最多也只能看懂6个题,能自己想出来正解的也只有3、4个题而已。一般每场比赛会出一道几何题。这种题只要理清了思路,知道用的知识点,就能解出来。最近的题,很多都在考用各种数据结构优化,减少复杂度。像hdu5517就用到了二位树状数组来统计,hd 阅读全文
摘要:
题目: 两个公司进行投标,竞争一些channels,每个投标可以包含多个channels,且都有一定的收益,每一个channels只能为其中的一个公司利用,同时保证一个公司给出的投标中选中的channels不会冲突,求出两公司收益总和的最大值。最多有300000个channels,每个投标最多包含3 阅读全文
摘要:
题意: 给定一些冰块,每个冰块上有一些企鹅,每个冰块有一个可以跳出的次数限制,每个冰块位于一个坐标,现在每个企鹅跳跃力为d,问所有企鹅能否跳到一点上,如果可以输出所有落脚冰块,如果没有方案就打印-1 分析: 很显然的最大流问题。把每个冰块x拆成x和x',连x->x'流量为跳出的次数限制。枚举落脚冰块 阅读全文
摘要:
题意: 一些人,和他们可能加入的组号。问每个组,最小的最大人数是多少 分析: 二分的是最大流的容量。设置一个超级源点,连向所有的人,容量为1。设置一个超级汇点,使所有的组连向超级汇点,二分的就是这里的容量(0~n)。然后根据题目给出的人和组的关系连接人和组,容量为1。二分时,若当前状态求出的最大流等 阅读全文
摘要:
题意: 从起点走到终点,然后从终点走到起点,其中不能同时走过相同的一条边,问你最小路径长度。先输入终点n,起点为1,接下来输入m,代表有m条边。每条边由起点,终点,长度组成。 分析: 求最小长度,还限定了每条路只能一次,所以可以用网络流来接。长度就是边费用,每条边的流量为1,这样实现了每条边只能走一 阅读全文
摘要:
这一周学习到的新算法有两个。 一是循环字符串的最小表示法,这是一个O(n)的算法。主要采用指针滑动的方式。首先定义i和j两个指针,i初始为0,j初始为1, k = 0开始,检验s[i+k] 与 s[j+k] 对应的字符是否相等,如果相等则k++,一直下去,直到找到第一个不同,(若k试了一个字符串的长 阅读全文
摘要:
题意: 给出n代表序列的长度,接下来给出序列A。找出abcd满足abcd互不相等1<=a<b<c<d<=n的同时A[a]<A[b],A[c]>A[d],问这样的abcd有几个. 思路:先忽略四个数两两不相等的条件,那就是(,逆序对个数)乘上(顺序对个数)。例如{2,4,1,3},逆序对就是{(2,1 阅读全文
摘要:
题意:给两个序列,求公共序列的个数 分析:很自然想到最长公共子序列的转移的转移形式,用dp[i][j]表示第一个串前i个 和第二个串前j个匹配的答案数量,a[i]==b[i],dp[i][j]=dp[i-1][j]+d[i][j-1]+1 a[i]!=b[i],dp[i][j]=dp[i-1][j] 阅读全文
摘要:
题意:l-r之间有多少个数,其连续k位不存在相同的数字 分析:数位dp,从高位开始向低位进行枚举。因为连续k个数字不相同,在枚举一个数字的时候, 要知道前k-1位的内容,这可以用一个4维的数组表示,再一点,前缀0的存在, 要区分现在枚举该位的0是不是前缀0,用一个标志记录bo就行,还有一点,就是前面 阅读全文