二分/前缀和
二分/前缀和
cutlery1137
这个作者很懒,什么都没留下…
展开
-
蓝桥杯 分巧克力【二分】
题目链接:AcWing 1227. 分巧克力儿童节那天有 K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N块巧克力,其中第 i 块是 Hi×Wi的方格组成的长方形。为了公平起见,小明需要从这 N块巧克力中切出 K块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数大小相同例如一块 6×5的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?输入格式第一原创 2020-10-13 12:10:17 · 156 阅读 · 0 评论 -
二分答案模板
#include <iostream>using namespace std;int a[] = {1, 2, 4, 5, 7, 8};//返回最后一个小于k的数的下标int find1(int k) { int l = 0, r = 5; while(l < r) { int mid = l + r + 1 >> 1; if(a[mid] < k) l = mid; else r = mid - 1原创 2020-10-13 10:33:58 · 216 阅读 · 0 评论 -
洛谷P1182 数列分段 Section II【贪心+二分】
题目链接:P1182 数列分段 Section II程序说明:二分适用于区间有界且单调,例如最大值最小或者最小值最大这类问题。设区间所有数中的最大值为L,区间所有的数总和为R,则答案一定位于L和R之间。利用二分算法快速得出答案。check函数利用贪心的思想,即P1181 数列分段Section I的方法,判断mid是否满足题目要求,如果不满足则在相应的区间进行二分查找。代码如下:#in...原创 2020-02-01 13:53:30 · 377 阅读 · 0 评论 -
leetcode 378. 有序矩阵中第K小的元素【优先队列】【二分】
题目链接:378. 有序矩阵中第K小的元素给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [[ 1, 5, 9],[10, 11, 13],[12, 13, 15]],k = 8,返回 13。程序说明:代码如下:...原创 2020-07-05 21:49:41 · 168 阅读 · 0 评论 -
leetcode 74. 搜索二维矩阵【二分】
题目链接:74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23,原创 2020-07-02 20:54:21 · 259 阅读 · 0 评论 -
洛谷P1824 进击的奶牛【二分答案】
题目链接:P1824 进击的奶牛程序说明:最大值最小化问题。明显能看出答案是在一个单调区间内的,因此用二分法来解。二分的难度主要是check函数的构造。代码如下:#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int N = 10...原创 2020-02-07 20:18:59 · 1493 阅读 · 0 评论 -
蓝桥杯 递增三元组【二分】
题目链接:AcWing 1236. 递增三元组给定三个整数数组A=[A1,A2,…AN],B=[B1,B2,…BN],C=[C1,C2,…CN],请你统计有多少个三元组 (i,j,k)满足:1≤i,j,k≤NAi<Bj<Ck输入格式第一行包含一个整数 N。第二行包含 N个整数 A1,A2,…AN。第三行包含 N个整数 B1,B2,…BN。第四行包含 N个整数 C1,C2,…CN。输出格式一个整数表示答案。数据范围1≤N≤105,0≤Ai,Bi,Ci≤105原创 2020-10-09 21:11:04 · 230 阅读 · 0 评论 -
洛谷P1147 连续自然数和 【二分+前缀和】
题目链接:P1147 连续自然数和程序说明:求出前缀和然后暴力枚举会超时,因此考虑二分答案,即寻找满足 s[j] - s[i - 1] = n 的 j 。代码如下:#include <iostream>#include <cstdio>using namespace std;const int N = 2000010;long long s[N];int...原创 2020-02-06 14:20:53 · 419 阅读 · 0 评论 -
洛谷P1880 [NOI1995]石子合并【区间DP】
题目链接:P1880 [NOI1995]石子合并程序说明:这道题和P1090 合并果子有些类似,但合并果子的过程是构造一棵哈夫曼树,而这道题是只能合并相邻的石子,通过模拟可以证明贪心得到的答案是错的,因此用动态规划来做。设dp[l][r]表示从 l 到 r 区间合并石子的代价的最小值,用k来划分区间,每次合并都终归于把 l 到 k - 1 和 k 到 r 两个子区间合并,然后加上区间的和(...原创 2020-02-19 12:30:17 · 262 阅读 · 1 评论