上一页 1 2 3 4 5 6 7 ··· 11 下一页
摘要: 一个大于b的数和一个小于b的数可以互相抵消,所以我们用1和-1表示。 从b向两边扩展,left[i]表示b左边抵消后有i个数比b小的可能数,right[i]表示b右边抵消后有i个数比b大的可能数。 ans=sigma(left[i]*right[i]). 阅读全文
posted @ 2016-07-23 19:46 Yangjiyuan 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 两次bfs可得直径,答案一定不会小于所有点到直径的距离最大值,只要把直径上的边权设为0,任选直径上一点bfs可得将最大值作为二分下界,二分直径左右端点的舍弃部分 阅读全文
posted @ 2016-07-23 19:45 Yangjiyuan 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 给白色边都加上一个值,二分这个值,使得选取的白边数量减少 阅读全文
posted @ 2016-07-23 19:39 Yangjiyuan 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 如果发现尾指针到头指针这段稻田的中位数上建一个粮仓时距离之和超过了B 就调整尾指针对距离维护一个前缀和 每次取中位数之后可以O(1)计算距离和 阅读全文
posted @ 2016-07-14 15:23 Yangjiyuan 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 自底向上贪心。 每次给儿子排序,贪心地从小到大删,直到不能删。 阅读全文
posted @ 2016-07-12 16:50 Yangjiyuan 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 首先显然要用KMP把next先求出来那么我们再考虑求一个cnt数组:表示可重叠的既是前缀又是后缀的子串个数这个可以用递推求:cnt[x]=cnt[next[x]]+1,想想就明白了那num又如何得到呢num与cnt的区别就是不能重叠,也就是那个子串的长度不能超过原串的一半那么从一个位置x一直往前跳n 阅读全文
posted @ 2016-07-11 16:37 Yangjiyuan 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 直接转换成最短路 阅读全文
posted @ 2016-07-07 16:10 Yangjiyuan 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 水题 set判重即可 oj上没有忽略行末空格 阅读全文
posted @ 2016-07-06 19:38 Yangjiyuan 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 利用前缀和选m个区间等价于选m个数 从最高位开始找,如果这一位至少有m个0,则可以为0,该位为1的后面就不可以选了。 还要注意,最后一个数如果该位为1,那么这一位必须为1,然后要从62开始枚举,而不是从31 阅读全文
posted @ 2016-06-21 21:50 Yangjiyuan 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 一、哲哲回家 出题人的解答: 可以将其转化成最短路模型。 这个地方转车怎么转移有点困难,有两种方法: 1.我们可以再把每一个点拆成M个点,我们用F[i,j]表示从1号点到i这个点并且坐在j路车上的最少费用,对于同一条线路的相邻两个点,我们连一条权值为Rj的边,对于不在同一条 线路的两个点,连一条Rj 阅读全文
posted @ 2016-06-14 22:26 Yangjiyuan 阅读(203) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 11 下一页