
二分三分
CaprYang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
区间交 HDU - 5700 权值线段树 | 树状数组 二分
题解 将区间按照左端点排序 最开始将前k-1个区间的右端点加入权值线段数 遍历剩下的区间每次把当前区间右端点加入权值线段数并查询倒数第k大的右端点 每次遍历的左端点 到 倒数第k大的右端点的区间则为当前最大区间 使用前缀和求区间和 AC代码 #include <stdio.h> #include <bits/stdc++.h> using namespace std; ty...原创 2018-10-18 16:07:56 · 485 阅读 · 0 评论 -
ACM-ICPC 2018 南京区域赛 D. Country Meow 三分 | 模拟退火
题解 题目大意给n个三维坐标系的点,要求找到一个点到达这些点的最远距离最近。 三分法: 因为答案函数单峰且三个维度的最优解相互独立,所以使用三次三分嵌套求出最优的x、y、z。 模拟退火: 玄学算法。。随机选取一个点检测是否更优然后更新答案。每次选取的点随着温度的降低与当前最优解的偏移量也降低。由于答案函数单峰所以更容易得到最优解。 AC代码 三分法: #include <stdio.h>...原创 2019-04-18 21:50:59 · 470 阅读 · 0 评论 -
郑州轻工业大学“CCPC2019-河南省赛”选拔赛(2) 部分题解
题目链接 A 火柴棒等式 <暴力> #include <stdio.h> #include <bits/stdc++.h> #define fst first #define sed second using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const ll L...原创 2019-04-18 21:21:24 · 1017 阅读 · 0 评论 -
Codeforces Global Round 2
A. Ilya and a Colorful Walk #include <stdio.h> #include <bits/stdc++.h> #define fst first #define sed second using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const l...原创 2019-04-09 21:51:28 · 699 阅读 · 0 评论 -
L3-002 特殊堆栈 树状数组 二分 | STL
题解 树状数组+二分: 使用栈模拟操作。树状数组记录栈内每个数值出现的次数,树状数组用来查询数值1~x的出现次数。 二分查找x位置,找到1~x出现次数和为栈内元素数量/2次的位置,则最小的x为当前栈内的中位数。 multiset法: 维护两个multiset,l和r表示[1, n/2]和[n/2+1, n]大小的元素,保证l内元素<=r内元素,l内元素数量>=r内元素数量,则l最后元素...原创 2019-04-02 23:35:57 · 573 阅读 · 0 评论 -
牛客练习赛40 D 小A与最大子段和 斜率优化 三分
题解 枚举每个区间右端点,如果再枚举左端点则复杂度为O(N^2)不可行。使用斜率优化。 令s为前缀和,p[i] = ∑(i * s[i]),区间[j, i]以i为右端点时区间和可以表示为p[i] - p[j - 1] - (j - 1) * (s[i] - s[j - 1])。 斜率方程(k < j < i) j比k优 为了表示方便j=j-1, k=k-1,((j * s[j] - p...原创 2019-03-08 21:55:30 · 320 阅读 · 0 评论 -
Codeforces Round #540 (Div. 3) D. Coffee and Coursework 二分
题解 题目大意,有若干杯咖啡,每杯咖啡有一个收益a[i],不限制每天喝多少杯,但是每天的第k杯收益会减少k-1,问总收益大于n的所需最少天数。 使用二分答案求解,每次喝肯定是挑剩余最大的去喝,check时mid天每天都只先喝第一杯如果不够再喝第二杯第三杯。。 在喝的过程中如果当前杯的收益小于等于当前所减少的收益则说明答案不可行。 AC代码 #include <stdio.h> #inc...原创 2019-02-21 23:23:00 · 333 阅读 · 0 评论 -
Educational Codeforces Round 60 (Rated for Div. 2) C. Magic Ship 二分
题解 题目大意,一艘船在海上受风力移动,给出每秒的风向,船每秒也可以自己动1格,问到达终点的最短时间 使用二分答案求解,check时按照风向走mid次,最后计算所处位置到达终点的曼哈顿距离是否小于mid(表示mid秒船自己移动机会使用最合理的方式安排)。 由于答案可能很大直接模拟走mid次会超时,将mid是n的整数倍部分直接移动再将余下的模拟移动。 AC代码 #include &amp;lt;stdio....原创 2019-02-21 22:11:47 · 319 阅读 · 0 评论 -
find the nth digit HDU - 1597 二分 思维
题解 打表计算1+2+3+…+N的所有和 二分查找到第一个小于N的那个和 N减去他 接下来就是9个一循环 N = (N - 1) % 9 + 1得到是哪个数字 AC代码 #include &lt;stdio.h&gt; #include &lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int INF =...原创 2018-12-23 20:59:10 · 635 阅读 · 0 评论 -
小新三连(二):小新在努力 ZZULIOJ - 2482 二分
题解 水题不做 每次做自身水平+提升上限范围内最大的 即能做出来的最难的题 因为数字过多使用二分查找优化 代码直接使用的STL更加方便 AC代码 #include <stdio.h> #include <bits/stdc++.h> using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f;...原创 2018-12-23 17:34:15 · 790 阅读 · 2 评论 -
Codeforces Round #521 (Div. 3) D. Cutting Out 二分
题解 题目大意 给你一个序列 让你找到一个长度为k的序列 在原序列当中出现的次数最多 满足单调性 二分出现次数 然后根据出现次数随意输出一个序列 AC代码 #include &lt;stdio.h&gt; #include &lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int INF = 0x3f3f...原创 2018-11-17 01:48:37 · 355 阅读 · 0 评论 -
小P的秘籍 ZZULIOJ - 1523 二分 ST表
题解 类似于括号匹配,将K看为1将A看为-1做前缀和记为a。如果某个区间[l, r]合法则a[l - 1]为当前区间内的a的最小值、a[r]为区间内的a最大值。 使用单调栈求出两个数组l、r,l表示当前位置向左第一个大于当前a的位置、r表示当前位置向右第一个小于当前a的位置。 枚举答案区间的左端点i二分右端点,二分范围为[i, r[i] - 1],右端点如果为r[i]则非法而小于这个值对于从左向右...原创 2019-04-18 22:15:17 · 633 阅读 · 0 评论