2018年5月14日

摘要: SubsequencePOJ3061 题意: 求出总和不小于S的连续子序列的长度的最小值。 思路: 二分查找的话,前缀和是满足单调性的,计算从每一个数开始总和刚好大于s的长度。 具体实现就是:二分搜索s[i]+s是否存在于前缀和数组中,就是查找以i+1开头的总和刚好大于s的最短长度。 尺取法: 常用 阅读全文

posted @ 2018-05-14 19:22 som_nico 阅读(93) 评论(0) 推荐(0) 编辑

2018年5月12日

摘要: 类似最大(小)值最大(小)化的问题都可以用二分来解决。 可以定义一个条件 C(x) 那么就是求满足某个条件 C(X)的最小的x 如果所有的x'>=x都满足C(x'),那么就可以用二分搜索来求最小的x 左端点初始化为不满足条件的值,右端点初始化为满足条件的值,每次取中点mid,判断C(mid)是否满足 阅读全文

posted @ 2018-05-12 21:11 som_nico 阅读(93) 评论(0) 推荐(0) 编辑

摘要: http://poj.org/problem?id=2456 思路:这是一个最小值最大化的问题。先对隔间编号从小到大排序,则最大距离不会超过两端的两头牛之间的差值,最小值为0。所以我们可以通过二分枚举最小值来求。假设当前的最小值为x,如果判断出最小差值为x时可以放下C头牛,就先让x变大再判断;如果放 阅读全文

posted @ 2018-05-12 21:04 som_nico 阅读(126) 评论(0) 推荐(0) 编辑

摘要: 白皮书的二分 题意:有n条绳子,他们的长度分别为li,从他们中切个出k条长度相同的绳子的话,这k条绳子每条最长能有多长?保留小数点后两位 分析:二分 阅读全文

posted @ 2018-05-12 20:55 som_nico 阅读(130) 评论(0) 推荐(0) 编辑

摘要: 完全背包与01背包的区别就是 01背包只有一次, 而完全背包有无限 我的01背包 完全背包 dp[i-1][j - k*weight[i]] +k*value[i] 经历了01背包,那么前面这个式子就很好理解了,k就代表无限个。 照例,先来一份最朴实无华的递推: 三重循环呀~ k最坏的情况是0~W 阅读全文

posted @ 2018-05-12 17:49 som_nico 阅读(76) 评论(0) 推荐(0) 编辑

摘要: (精选上好代码讲解产自原装进口白皮书) 01背包问题 有n个重量和价值分别为wi,vi的物品,从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值。 首先我们用朴素的方式搜索一遍: 优化一下(记忆数组) 不用递归函数,直接利用递推式: 以上DP都是关于i的逆向进行的循环 那么正向 阅读全文

posted @ 2018-05-12 11:59 som_nico 阅读(152) 评论(0) 推荐(0) 编辑

该文被密码保护。 阅读全文

posted @ 2018-05-12 09:27 som_nico 阅读(1) 评论(0) 推荐(0) 编辑

摘要: 拓展 1.能否直接算出集合{1, 2, ..., m}的第n个排列? 举例说明:如7个数的集合为{1, 2, 3, 4, 5, 6, 7},要求出第n=1654个排列。 (1654 / 6!)取整得2,确定第1位为3(从0开始计数),剩下的6个数{1, 2, 4, 5, 6, 7},求第1654 % 阅读全文

posted @ 2018-05-12 09:08 som_nico 阅读(136) 评论(0) 推荐(0) 编辑

2018年5月11日

摘要: 您的好友 あほう已上线。 网络流我看了三天才看明白... 一致怀疑人生还要不要学算法了,笨都要笨死了我。 后来看了 最大流(网络流基础概念+三个算法) 这篇才明白,啊~ そっか~ 主要是没明白反向边,上面这篇博客讲得很详细啦。 那么我写这篇博客干啥呢... (大概是戏精上身) 就酱八... 咸鱼人生 阅读全文

posted @ 2018-05-11 19:04 som_nico 阅读(157) 评论(0) 推荐(0) 编辑

2018年5月9日

摘要: 某些问题中,会遇到一对多的二分图模型,即允许集合Y中的一个元素和集合X中的多个元素匹配(通常有一个最大限制n) 阅读全文

posted @ 2018-05-09 16:14 som_nico 阅读(614) 评论(0) 推荐(0) 编辑