二分
张小生的先生
你要觉得我博客还行,就点赞加个关注,有意深聊的可以私信,随时欢迎,当然有女性想深聊的我更欢迎,要是男性的话不建议私聊,我跟一大老爷们真聊不起来。我人品五五开,胆小不好色,对女性要求不高但要识大体,样貌看得过去就行,其它的也就那样了。我不仅把这个当作学习博客也当作一个招友的圣地,希望在这里遇见更好的你。
展开
-
[第 45 届ICPC 南京] F.Fireworks (期望+三分)
题目链接:F.Fireworks题解放出完美烟花的最短时间——就是在第k次放烟花时就能得到完美烟花,那么设时间期望为f(k)得出f(k)=k∗n+m1−(1−p)k,(k为正整数){f(k)=\frac{k*n+m}{1-(1-p)^k}},(k为正整数)f(k)=1−(1−p)kk∗n+m,(k为正整数)现在可以将问题转化为求函数最小值。通过求一次导发现函数不单调,再次求导得出函数为单峰函数,那么对于单峰函数求极值可以通过三分得到。代码注意这里三分循环条件不是r>l,而是r>l原创 2021-03-22 19:49:06 · 166 阅读 · 0 评论 -
二分模版
二分模版求下边界(第一个满足条件的)int find_low(int x){ int mid,l=1,r=n; while(l<=r) { mid=l+(r-l)/2; if(a[mid]<x) l=mid+1; else r=mid-1; } return l;}求上边界(最后一个满足条件的)int find_up(int x){ int mid,l=1,r=n; while(l<=r) { mid=l+(r-l)/2; if(a[mi原创 2020-06-11 12:57:58 · 140 阅读 · 0 评论 -
牛客:栗酱的不等式
栗酱的不等式栗酱的不等式题解:本题还是沿用二分一贯的风格,二分答案。那么二分的条件是什么呢?假如二分已经知道了最小值n,如何通过n求符合答案的个数m?这里我们可以枚举x,由于x3≤1e16{x^3≤1e16}x3≤1e16,x最多枚举到215444即可,倘若枚举y就得枚举到1e16左右,很明显枚举x是最优方法。由于y∗x3≤n{y*x^3≤n}y∗x3≤n,用二分的答案n/x3就是每一个x符合不等式的数量,求和即可求所有符合答案的个数。{n/x^3}就是每一个x符合不等式的数量,求和即可求所有原创 2020-06-10 23:33:57 · 130 阅读 · 0 评论 -
牛客:装备合成
牛客:装备合成装备合成题解:本题做法有很多种,高中数学的线性规划法、二分、三分等等,我就拿二分的解法来说吧。答案的范围为[0,1e9],每次判断的答案为mid,那么二分的条件是什么是解决本题的关键。假设合成第一件装备有k个,则合成第二件装备有mid-k。由题可知{0≤2∗k+4∗(mid−k)≤x0≤3∗k+(mid−k)≤y0≤k≤mid \begin{cases}0≤2*k+4*(mid-k)≤x \\ 0≤3*k+(mid-k)≤y \\ 0≤k≤mid \end{cases} ⎩⎪⎨原创 2020-06-10 15:52:52 · 761 阅读 · 0 评论 -
牛客:[CQOI2009]中位数图
牛客:[CQOI2009]中位数图[CQOI2009]中位数图题解:由于是1~n的排列,并且求连续子序列。求中位数为k的有多少个?首先预处理,大于中位数的表示为1,小于为-1。这里用到了前缀和的思想,从中位数向两侧统计,我们很容易知道,左边大于中位数的有多少个,小于中位数的有多少个以及符合条件的有多少个,右边也如此。那么在计算右边时,如果右边大于中位数的有m个,那么答案就加上左边小于中位数个数为m的值,这样就可以得出结果了。#include<iostream>#include原创 2020-06-10 11:39:22 · 252 阅读 · 0 评论 -
牛客:wyh的物品
牛客:wyh的物品wyh的物品题解:一道经典的实数二分题。二分答案,假设取这k个物品的下标为i1,i2,.....,ik{i_1,i_2,.....,i_k}i1,i2,.....,ik,二分得到一个答案x。a为重量,b为价值,实际的结果为:∑j=1kbijaij\sum_{j=1}^k \frac{b_{i_j}}{a_{i_j}}∑j=1kaijbij。如果∑j=1kbijaij≥x\sum_{j=1}^k \frac{b_{i_j}}{a_{i_j}}≥x∑j=1kai原创 2020-06-09 23:59:06 · 900 阅读 · 0 评论 -
牛客:完全平方数
完全平方数完全平方数题解:没想到本题竟然能用二分解决,二分真是无处不在啊。题意很简单找[l,r]内的完全平方数,由于sqrt(1000000000)=31622。所以答案必定在[0,31622]区间内,我们可以二分左右两个区间 :左区间L2≥l{L^2}≥lL2≥l右区间R2>r{R^2>r}R2>r那么[l,r]区间内完全平方数为 L2,(L+1)2,.....,(R−1)2{L^2,(L+1)^2,.....,(R-1)^2}L2,(L+1)2,.....,(R−1原创 2020-06-09 22:19:46 · 478 阅读 · 0 评论