随笔分类 -  二分

摘要:两次bfs可得直径,答案一定不会小于所有点到直径的距离最大值,只要把直径上的边权设为0,任选直径上一点bfs可得将最大值作为二分下界,二分直径左右端点的舍弃部分 阅读全文
posted @ 2016-07-23 19:45 Yangjiyuan 阅读(201) 评论(0) 推荐(0)
摘要:给白色边都加上一个值,二分这个值,使得选取的白边数量减少 阅读全文
posted @ 2016-07-23 19:39 Yangjiyuan 阅读(148) 评论(0) 推荐(0)
摘要:如果发现尾指针到头指针这段稻田的中位数上建一个粮仓时距离之和超过了B 就调整尾指针对距离维护一个前缀和 每次取中位数之后可以O(1)计算距离和 阅读全文
posted @ 2016-07-14 15:23 Yangjiyuan 阅读(161) 评论(0) 推荐(0)
摘要:因为解一定是单调的,n越小切的题越多,这是可以肯定的,那么直接二分答案 阅读全文
posted @ 2016-05-17 16:31 Yangjiyuan 阅读(439) 评论(0) 推荐(0)
摘要:第K大也就是第n-K+1小,所以就可以的二分答案了 (江哥讲过一道类似题) 二分答案找出比当前答案小的数的位置的坐标,判断一下是否可以选出满足不在同一行同一列的n-K+1个数,然后就可以跑匈牙利了,对于一个坐标(x,y)如果满足a[x][y]≤a[x][y]当前答案,就把第x行向第y列连边,然后跑匈 阅读全文
posted @ 2016-04-07 21:54 Yangjiyuan 阅读(393) 评论(0) 推荐(0)
摘要:首先求出以每个数为开头上升序列长度,即倒着做最长下降子序列 然后,把字典序尽量小的放前面 即若要求的序列长度为x,如果以第一个数(字典序最小的数)开头的最长上升子序列大等于x,则将它放在答案第一个,第二个数开头小于x,则舍弃,第三个大于x-1,放答案第二个,以此类推 1 #include<algor 阅读全文
posted @ 2016-03-31 22:24 Yangjiyuan 阅读(188) 评论(0) 推荐(0)
摘要:题意:就是说一开始一个序列是空的,然后每次可以将连续的一段染成同一颜色,问多少次才能到目标状态。 一开始想的是二分,然后题解DP。。。 f[i][j]表示区间[i,j]需要染色多少次 首先初始状态是f[i][i]=1和f[i][i+1]=str[i]==str[i+1] 然后从短区间地推到长区间 对 阅读全文
posted @ 2016-03-25 21:00 Yangjiyuan 阅读(238) 评论(0) 推荐(0)
摘要:二分答案 验证有一种贪心的思想,就是如果这条路的c1比二分的值还小,那就要果断选择一级公路。 搜过一遍后,如果可供选择的一级公路小于k,就可以直接返回否了。 接下来继续选择,如果可以选到n-1条路,就可以,否则就不可以。 选择道路时,选择的一定是不在一个集合里及不连通的,要用并查集优化。 #incl 阅读全文
posted @ 2016-03-25 20:55 Yangjiyuan 阅读(175) 评论(0) 推荐(0)
摘要:显然我们取的肯定是前ans块木板。然后砍的木材也应该是从小到大砍(如果小的木材可以满足条件,就一定不会去动大的木材) 所以两遍排序。 二分答案。 然后对于要取的每块木板,我们搜索它是在第x块木板上砍下来的。。 要加剪枝: ①如果砍下了这块木材然后这块木材小于第一块木板,那就失去价值,用t来记录。当t 阅读全文
posted @ 2016-03-25 20:54 Yangjiyuan 阅读(173) 评论(0) 推荐(0)