首页 > 其他分享 >第二周9.7周六学习总结——二分

第二周9.7周六学习总结——二分

时间:2024-09-07 20:35:46浏览次数:10  
标签:二分 return int res LL mid 第二周 lim 9.7

while (l < r)
    {
        int mid = l + r >> 1;	//(l+r)/2
        if (check(mid))  r = mid;    // check()判断mid是否满足性质
        else l = mid + 1;
    }
	
	


	while (l < r)
    {
        int mid = l + r + 1 >> 1;
		//(l+r+1)/2,往右找答案要加1
        if (check(mid))  l = mid;
        else r = mid - 1;
    }

二分

分巧克力

https://www.luogu.com.cn/problem/P8647

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int h[maxn];
int w[maxn];
int n,k;
bool check(int ans)
{int sum=0;
	for(int i=0;i<n;i++)
	{
sum+=(h[i]/ans)*(w[i]/ans);
	}
	if(sum<k)return false;
	else
	return true;
}
int bs(int l,int r)
{

	while(l<r)
	{	int mid=(l+r+1)>>1;//写在while外面导致tle
		if(check(mid))
		l=mid;
		else
		r=mid-1;
	}
	return l;
}
int main()
{

	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
			cin>>h[i]>>w[i];
		
	}

	cout<<bs(1,maxn);
}

杨辉三角(二分答案行+数学性质)

include

typedef long long LL;
const LL INF=1e9;
LL n;
LL C(LL a,LL b){
LL res=1;
for(LL i=a,j=1;j<=b;i--,j++){
res=resi/j;
if(res>n) // fixed
return res;
}
return res;
}
int main(){
scanf("%lld",&n);
// 只需遍历 16 行
if(n==1){
printf("1");
return 0;
}
for(int i=16;i>=0;i--){
LL l=2
i,r=INF,mid,lim;
while(l<=r){
mid=(l+r)>>1,lim=C(mid,i);
//第mid行,第i条对角线
if(lim==n){
printf("%lld",(mid+1)*mid/2+i+1);
//因为从0行开始,但是因为在计算元素位置时,实际索引从 1 开始
return 0;
}else if(lim<n)
l=mid+1;
else{
r=mid-1;
}
}
}
return 0;
}

#include<cstdio>
typedef long long LL;
const LL INF=1e9;
LL n;
LL C(LL a,LL b){
    LL res=1;
    for(LL i=a,j=1;j<=b;i--,j++){
        res=res*i/j;
        if(res>n)	// fixed
            return res;
    }
	return res;
}
int main(){
    scanf("%lld",&n);
    // 只需遍历 16 行
    if(n==1){
        printf("1");
        return 0;
    }
    for(int i=16;i>=0;i--){
        LL l=2*i,r=INF,mid,lim;
        while(l<=r){
            mid=(l+r)>>1,lim=C(mid,i);
            //第mid行,第i条对角线
            if(lim==n){
                printf("%lld",(mid+1)*mid/2+i+1);
                //因为从0行开始,但是因为在计算元素位置时,实际索引从 1 开始
                return 0;
            }else if(lim<n)
                l=mid+1;
            else{
                r=mid-1;
            }
        }
    }
    return 0;
}

标签:二分,return,int,res,LL,mid,第二周,lim,9.7
From: https://www.cnblogs.com/hoshino-/p/18402115

相关文章

  • 信息学奥赛初赛天天练-85-NOIP2014普及组-基础题4-链表、随机存取、顺序存取、二分查
    信息学奥赛初赛天天练-85-NOIP2014普及组-基础题4-链表、随机存取、顺序存取、二分查找、二分比较、循环结构、图领奖PDF文档公众号回复关键字:202409071NOIP2014普及组基础题49下列选项中不属于图像格式的是()AJPEG格式BTXT格式CGIF格式DPNG格式1......
  • 算法-二分查找
    二分查找是在一个有序的数组中查找目标值target,需要将target和数组中间元素做比较:1)如果target=mid,查找成功,返回mid的下标。2)如果target>mid,目标在数组右半部分,low=mid+13)target<mid,目标在数组左半部分,high=mid-1如下数组:1、首先,指定数组的左指针和右指针,根据公式mid......
  • 搜索算法之二分搜索详细解读(附带Java代码解读)
    1.基本概念二分搜索(BinarySearch)是一种高效的查找算法,用于在一个已排序的数组中查找特定元素。它通过逐步将搜索范围减少一半来实现搜索,从而比线性搜索更快。由于它利用了数组的有序性,能够在对数时间内完成搜索操作。2.工作原理二分搜索的基本思想是:初始化:设置两个指针......
  • 1.3二分算法
    算法理解二分用于解决答案具有单调性问题(经典最大值最小问题),是一个好的入手点,用一个log的复杂度,将求解答案转化成了判断答案是否合法实数域上的二分两种方法:确定精度eps,固定枚举次数,一般后者精度大于前者T1:二分最大值,注:如果有一个数本身就大于二分答案,则答案肯定错误,证明:考虑......
  • DP优化——wqs二分
    在看wqs二分前建议先去看另一篇博客——斜率优化,对凸包等知识点有所了解。介绍wqs二分最初由王钦石在他的2012年国家集训队论文中提出,也叫"带权二分",或者"dp凸优化",而从IOI2016的Aliens题目开始,这种方法开始逐步在竞赛圈中有了一定的地位。在国内我们一般称为「wqs二......
  • 【CUDA12安装包】CUDA 12.6.1 及其配套的 cuDNN 8.9.7.29
    CUDA12.6.1及其配套的cuDNN8.9.7.29【均来自英伟达官网】【Windows11】链接:https://pan.baidu.com/s/1wTluMG1-KbOZCOZfcxqsrw?pwd=2rqg提取码:2rqg内容:cuda_12.6.1_560.94_windows.exe(560.94是要求最低显卡驱动版本)cudnn-windows-x86_64-8.9.7.29_cuda12-archive.zip......
  • 二分查找:手拿把掐!------Java代码实现
    “没有天赋,那就不断重复.”文章目录前言文章有误敬请斧正不胜感恩!模板一:(最基本的)**左闭右闭:**[left,right]模板二:**左闭右开区间模板:**区间:左闭右开[left,right):模板三:开区间模板:(left,right)循环不变量:二分查找易错点:做题经验:疑问及解答:我自己的......
  • [OI] 整体二分
    整体二分可以理解成普通二分改版,其实并没有改多少,并且一般对check()函数的复杂度要求更宽松先来看一道经典题目:求区间排名给一个数列,若干组询问\((l,r,k)\),求\([l,r]\)内第\(k\)大,询问次数较大注意到询问次数较大,因此需要整体二分来解决首先考虑普通二分,很容易想到一......
  • 豆瓣评分9.7 这本书真是太优秀了! TensorFlow全面实战 附电子版!!
    前言TensorFlow乃是由GoogleBrain团队所开发的开源机器学习框架。其被广泛应用于各类机器学习与深度学习的领域,像是神经网络、自然语言处理以及图像识别等等。《TensorFlow实战:Google深度学习框架》全方位涵盖了TensorFlow的核心概念与技术,从基础的知识到高级的应用均有详......
  • 二分查找精炼回顾-kevin
    二分搜索回顾,由于习惯问题,二分搜索问题都采用闭区间来思考二分搜索总共就三类问题,统一规范如下,由于都统一采用闭区间来思考,所以while的判定条件都是**left<=right**mid在都是在while循环之后再更新left=0,right=len(nums)-1#所以二分搜索区间是[left,rig......