二分法
文章平均质量分 72
nlj1999
这个作者很懒,什么都没留下…
展开
-
2144: 跳跳棋
跪跪跪跪跪跪。 二分+LCA什么的根本想不出来啊。 只好翻题解了。 大概就是每一个状态有两种决策。 两边的往中间跳。 中间的往两边跳。 第一种对应树上的两个儿子。 第一种对应树上的父亲。 然后就是二叉树了。 就可以倍增/二分了。 然后就乱搞出来了。 #include #include #include #include using namespace std; const i原创 2015-12-23 15:21:15 · 416 阅读 · 0 评论 -
BZOJ 4552: [Tjoi2016&Heoi2016]排序
BC #76 这题目好鏼啊! (我也不知道怎么就满足二分性了) #include #include #include #include #include #include #include #include #include #define rep(i,l,r) for(int i=l;i<=r;i++) #define per(i,r,l) for(int i=r;i>=l;i--) #d原创 2016-05-20 15:49:21 · 563 阅读 · 0 评论 -
BZOJ 4592: [Shoi2015]脑洞治疗仪
多写线段树有利于治疗脑洞 0,2操作都好说 操作1需要二分一下能够填脑洞的范围 复杂度m(logn)^2 (rank1怎么跑得辣么快啊,难道有1个Log的做法?) #include #include #include #include #include #include #include #include #include #include #include #include #de原创 2016-05-25 14:14:37 · 528 阅读 · 0 评论 -
BZOJ 4590: [Shoi2015]自动刷题机
显然n递增的时候k会递减 于是可以二分n的值,检查一下与k的大小关系 (不要问我怎么证,感觉就是这样的) #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,l,r) for(int i=l;i<=r;原创 2016-05-24 20:38:44 · 371 阅读 · 0 评论 -
BZOJ 2732: [HNOI2012]射箭
首先分析一下题目 设抛物线为y=a*x^2+b*x 然后就是看是否存在a,b满足条件了 即y1 所以就是半平面交了 二分判断一下就……卡精度了QAQ 所以要用long double 不过判断半平面交是否为空集好像有期望O(n)的随机增量法,但是我不会啊 #include #include #include #include #include using namespace std;原创 2016-04-08 10:54:25 · 724 阅读 · 0 评论 -
LA 3270 - Simplified GSM Network
还是觉得应该先把论文刷完 感觉好像掌握了构造维诺图的特殊技巧 论文的方法真是奥妙重重 但是时间复杂度怎么算,我有点方 O(ans)? #include #include #include #include #include #define sqr(x) ((x)*(x)) using namespace std; const int inf=1e9; struct point{ dou原创 2016-03-23 08:13:56 · 321 阅读 · 0 评论 -
BZOJ 3672: [Noi2014]购票
近年来的趋势都是把动态规划出成计算几何吗? 这题首先我们有个n^2的动规 设v为u的祖先f[u]=min{f[v]+(d[u]-d[v])*p[u]+q[u]}且d[u]-d[v] ~~~~~我要变形了~~~~~~ f[u]=min{-d[v]*p[u]+f[v]}+d[u]*p[u]+q[u] 哎,前面这个好像什么东西啊 y=kx+b 于是我们发现u的祖先是好多线 假设p[u]为原创 2016-04-04 20:28:25 · 689 阅读 · 0 评论 -
POJ 2750 Potted Flower
题目大意:给定一长度为n的环形序列求最大连续和,连续和长度不能超过n-1,单点修改。 最大连续和?我会动规/贪心 环形序列?我会乱搞 带修改?我会线段树 限制长度?!@#¥%……&*() 我们先忽略掉环形序列 首先,限制很特殊,是n-1,于是我们可以很简单地求出[1,n-1]和[2,n]的最大连续和,取两者的最大值。(不要问我限制为k的时候怎么做,我不会啊) 然后我们看环形序列,首先原创 2016-02-15 11:37:18 · 292 阅读 · 0 评论 -
POJ 2976
又发现新东西了哇咔咔 话说每天都能学到新的是不是因为我太弱了(什么都没见过%>_ 传说中的01分数规划问题的裸题。 从n组数中干掉k组数使最后的比例最大,于是二分答案排序一下再判定就好了。 #include #include #include #include using namespace std; double a[1005],b[1005],d[1005]; int n,k; boo原创 2016-01-18 19:34:51 · 337 阅读 · 0 评论 -
POJ3621 Sightseeing Cows
又被G++坑了一次。。。。。算了不提也罢。 题意要找一个环游路线使得 收益/花费 最大,显然是基环,于是分数规划,判断是否有正权圈。 然后 弃疗 发现好像不会求正权圈唉。 算了,取反。 改求负权圈,spfa一下就好了。 #include #include #include #include #include using namespace std; const int N=1000+原创 2016-01-18 21:09:16 · 293 阅读 · 0 评论 -
POJ 2728 Desert King
最优比例生成树。 首先是个完全图,所以Kruskal算法不好用,于是写Prim。 第一次写Prim算法,表示不知道nlogm怎么优化出来的,感觉我怎么想都是mlogm。 于是果断弃疗用邻接矩阵。 由于懒得学Dinkelbach算法,于是就用二分来水一水。 不妨设F(L)=sigma(h[i]-l[i]*L)*x[i],假如F(L)的最小值大于0,即无论x[i]怎么取(要按照基本法来),都原创 2016-01-18 20:41:39 · 223 阅读 · 0 评论 -
BZOJ 4310: 跳蚤
(我当然不是因为标题才点进这道题的啦(打死不承认)) 最大字典序的串最小,听起来就很像二分嘛 于是我们考虑一共m个本质不同的子串,从这里面二分就好了 首先我们需要求第k大(小?)(即二分时的mid)的子串: 我们从前往后扫sa数组,即从小到大枚举后缀,若当前后缀贡献的字串数不够k,则让k减去这些贡献,否则答案即是这些后缀所构成的贡献(就是一个后缀上的一大堆前缀区间啦)中的第k个。原创 2016-06-17 18:41:25 · 1314 阅读 · 0 评论