随笔分类 - 二分/三分算法
摘要:A:http://codeforces.com/contest/1462/problem/A #include<iostream> #include<cstring> #include<map> #include<stack> #include<queue> #include<algorithm>
阅读全文
摘要:地址:https://www.acwing.com/problem/content/description/804/ 一: 本来想的是差分做,但是范围是不允许开这么大的数组的。l,r<=1e9 所以考虑离散化。 发现n只有1e5,n个加操作,m个L,R,最多用到n+L+R个区间,也就是3e5。所以开
阅读全文
摘要:地址:https://www.acwing.com/problem/content/141/ 解析: 1:在假设完全无差错的情况下,不同子串对应不同哈希值。 对于abcba,那么ab的哈希值应该等于ba的反转哈希值。 也就是说,根据一个字符串,迅速求出它的逆序字符串的反哈希值,如果两者相等,则两者为
阅读全文
摘要:洛谷地址:https://www.luogu.com.cn/problem/P1372 题意: 简单来讲,就是在1~n中,找k个使得它们的gcd最大 解析: 一数学分析: 假设第一个为x 那么有2x,3x,4x,....kx kx<=n 则:x<=n/k n/k即为答案 #include<bits/
阅读全文
摘要:地址:https://ac.nowcoder.com/acm/contest/5986/E 解析: 二分最短距离,check出它所需要的修改次数。 check里注意,如果需要修改,那么last是不要变的,因为往后的a[i]-last即为去掉中间后的距离。 如果不需要修改,那么last需要变为a[i]
阅读全文
摘要:地址:http://poj.org/problem?id=2182 题意: N头奶牛排队,它们的身高为1~n,已知每头牛前面有多少头比自己矮,求每头牛的身高。 解析: 输入其实是从i=2开始的 暴力代码:跑了438M #include<iostream> #include<cstdio> using
阅读全文
摘要:A:http://codeforces.com/contest/1359/problem/A 题意: n张牌,m张王,k个人,每个人分得n/k张牌,得分为手中王牌数-其他人中所拥有的最大王牌数。存在多个,输出0分。 解析: a题依然是熟悉的分类讨论~先分第一个人,再分给其他人,分类讨论。关键是这个n
阅读全文
摘要:地址:http://poj.org/problem?id=2985 题意: 输入n,m。共n只猫,m组询问。 1,L,R。L号猫所在组和R号猫所在组合并 0,x。查询第x大组有几只猫。 解析: 理解了好久的说。。。最最重要的还是树状数组的本质要理解好,要不代码写再多也没用。 树状数组:c[i]表示所
阅读全文
摘要:地址:http://codeforces.com/contest/1345 题意:按图中规则堆金字塔,给出n个材料,尽量往高的堆,问可以堆出多少个金字塔。 解析:可以推出每个金字塔所需材料数:2,2+5,2+5+8,2+5+8+11.......可以打表,然后二分找>=n的第一个位置,n减去它直到n
阅读全文
摘要:地址:https://ac.nowcoder.com/acm/contest/5158/B 解析:先把数组排序,我们需要取某一段,这一段的最大-最小<=k,关键是取哪一段。可以对于每个数,往后找,找到第一个减它>k的,这中间一段就满足了任意两个数之差<=k了。找的过程可以用upper_lound(,
阅读全文
摘要:lower_bound和upper_bound均利用了二分查找算法,在一个数组中进行查数。 lower_bound(begin,end,x)-数组名。从begin位置到end-1位置,查找第一个大于等于x的数的位置。如果不存在,返回的是end upper_bound(begin,end,x)-数组名
阅读全文
摘要:地址:http://codeforces.com/contest/1337 题意:给出a,b,c,d。从a~b~c~d三个区间内各找一个数,构成三角形。 解析:根据三角形的性质,输出a,c,c是一个可行解。记得从小到大输出,wa了1次。 #include<iostream> #include<vec
阅读全文
摘要:二分算法适用于单调函数。对于凸性或凹形函数,可以采用三分的做法。很简单,跟二分类似,只是这里需要两个mid。 已知左右端点L,R,求峰值。第一个mid=(L+R)/2,第二个mmid=(R+mid)/2。判定方法和二分一致,思想就是无限逼近。对于凹形和凸性函数,写法不一样。下面给出模板。 凸性: v
阅读全文
摘要:地址:https://ac.nowcoder.com/acm/contest/4743#question 解析:简单模拟。其实我写的并不简单,太尴尬了。第一个是我的,第二个借鉴别人的。 #include<iostream> #include<cstdio> #include<cstring> #in
阅读全文
摘要:题目链接:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3593 题意:输入n*4的矩阵,从4列中每个选一个数求有多少个和为0; 1 6 -45 22 42 -1
阅读全文
摘要:https://www.51nod.com/Challenge/Problem.html#problemId=1267 第一种方法:两个for+二分:很好理解,不用考虑重复的问题。但是这个还不够快 #include<iostream> #include<cstdio> #include<cstrin
阅读全文
摘要:二分法: 在看这个视频前,我对于二分法是一头雾水的,又加上这个算法我个人很容易写错emm...。视频提到ACwing上的一道题,我用自以为聪明的方法去做,结果TLE了,实在丢人,不说了,开整! 对于例题 789:数的范围,寻找一个数前后第一次与最后一次出现的坐标。我们需要这个模板: 数组定为numb
阅读全文

浙公网安备 33010602011771号