
二分
算法
黑谷小健
一定要开心鸭
展开
-
牛客练习赛 3 E
题意: 链接:登录—专业IT笔试面试备考平台_牛客网 𝑅𝑒𝑘𝑖是一名狙击手,凭借肉眼视觉可以做到精确命中绝对半径2051公尺的一切目标。 作为一名优秀的狙击手,𝑅𝑒𝑘𝑖不仅经常保养枪支,也经常保养弹药。 𝑅𝑒𝑘𝑖有𝑛枚子弹,第𝑖枚的型号为𝐶𝑖,𝑅𝑒𝑘𝑖打算扔掉其中最多𝑘枚。 大多数优秀的狙击手都有艺术癖好,𝑅𝑒𝑘𝑖希望扔掉一部分子弹后,最 长的连续相同子弹序列的长度尽量长。 思路: 两种解法,二分或者双指针,其实很多题目能用其中一种另外一种都行,因为都要符合单调性,看到c的范围应该不难想到需要离散化原创 2022-03-24 16:43:31 · 1110 阅读 · 0 评论 -
题解报告:P2404 自然数的拆分问题(dfs+回溯)
飞机票 思路:题目要求是拆分后的序列中的数字从小到大排序,要求输出字典序较小的序列。所以我在for循环的最小值就用上一位的值,然后搜索回溯, #include<bits/stdc++.> using namespace std; const int maxn=10; int n; int ans[maxn]; void dfs(int sum,int cnt) { int i; if(sum==n){ for(i=0;i<cnt-1;i++){原创 2021-05-14 11:53:32 · 201 阅读 · 0 评论 -
题解报告:2021湖南多校对抗赛第四场-J - Let Me See See!(二分答案)
飞机票 题意: 思路: 二分答案+贪心!!!又是二分答案!!! 其实可以把题目理解成这样,你有一段长为k的绳子,你挨个比对目前遍历到的点所形成的区间是否比绳子大,如果大于绳子长度,那么这个点就可以加入,就比较当前点和下一个点所形成的区间,如果遍历到这个点,长度小,那么这个点就不能加入~~ #include<bits/stdc++.h> using namespace std; const int maxn=1e5+1000; int a[maxn]; int main() { int原创 2021-05-06 19:12:56 · 293 阅读 · 2 评论 -
题解报告:P1182 数列分段 Section II(二分答案)
题意: 思路: 二分答案经典题,把每段和最大值的最小枚举出来用二分去找最小且可以分的段数不超过m的。 补充一下二分答案,名如其人 ,二分的方法枚举答案,并且枚举时判断这个答案是否可行。但是,二分并不是在所有情况下都是可用的,使用二分需要满足两个条件: 1.有上下界 2.区间有单调性 二分答案应该是在一个单调闭区间上进行的。也就是说,二分答案最后得到的答案应该是一个确定值,而不是像搜索那样会出现多解。二分一般用来解决最优解问题。 #include<bits/stdc++.> using name原创 2021-05-05 21:00:06 · 161 阅读 · 0 评论 -
题解报告:P1577 切绳子(二分答案)
P1577 切绳子 题意:有 N条绳子,它们的长度分别为 Li 。如果从它们中切割出 KK 条长度相同的绳子,这 KK 条绳子每条最长能有多长?答案保留到小数点后 2 位(直接舍掉 2 位后的小数)。 题目地址丢这辽 思路:二分查找答案,L的区间已经给出来了,化小数就乘100就好辽=。=下次一定注意 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+1000; int a[maxn],n,k; double x; i原创 2021-03-23 20:46:27 · 2065 阅读 · 0 评论