2017年蓝桥杯省赛真题 分巧克力(枚举优化)

2017年蓝桥杯省赛真题 分巧克力(枚举优化)_第1张图片

本题思路很清晰:我们只需将所有的边长从大到小都进行枚举,并且计算对应能够供给小朋友的巧克力块数,直到能够满足K的需求!!!!!!!!!!!!!!!!!!!!!!!!!!!

#include 
#include 

int main(int argc, char *argv[])
{
    int i,j,n,k,num[100005][2];
    scanf("%d%d",&n,&k);
    for(i=0;i=1)
    {
        int sum=0;
        for(i=0;i=k)
        break;
        len--;
    }
    printf("%d",len);
  return 0;

这是我写的未经过优化的代码,很明显,提交后超出时间限制,本题数据规模最大可达10的10次方,像这类有大数据的题目,我们通常都必须优化。

这里给出一种优化方法:二分法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#include
int main()
{
	int i,j,n,k,num[100005][2],l,ans,r,mid;
	scanf("%d%d",&n,&k);
	for(i=0;i=k)
		{
			l=mid+1;
			ans=mid;	
		}
		else
		{
			r=mid-1;
		}
	}
	printf("%d",ans);
	return 0;
	
}

你可能感兴趣的:(蓝桥杯历年真题题解,c语言,蓝桥杯,算法)