编程语言
首页 > 编程语言> > 《算法笔记》二分—木棒切割问题&求凸多边形外接圆最大半径

《算法笔记》二分—木棒切割问题&求凸多边形外接圆最大半径

作者:互联网

木棒切割问题

大意:给N根木棒,通过切割至少得到K段长度相同的木棒,长度相同的木棒最长能有多长
思路:已知结论,长度相同的木棒长度越长,切割得到的K越小,可以二分法,即求最后一个满足“k<=K”的L,可转换为第一个满足“k>K”的位置,再减一

#include<stdio.h>
#include<algorithm>
using namespace std;

int main()
{
    int n,K,k=0,length[10];
    scanf("%d%d",&n,&K);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&length[i]);
    }
    sort(length,length+n);
    int left=1,right=length[n-1],mid;
    while(left<right)
    {
        k=0;
        mid=(left+right)/2;
        for(int i=0;i<n;i++)
        {
            k+=length[i]/mid;
        }
        if(k<K) right=mid;
        else left=mid+1;
    }
    printf("%d",mid-1);
    return 0;
}

二分法求凸多边形外接圆最大半径

大意:给定N条线段,按任意顺序首尾相连,组合成一个凸多边形,使得其外接圆半径最大,求最大半径
思路://明天再想:-D

标签:切割,木棒,凸多边形,外接圆,int,半径
来源: https://www.cnblogs.com/Hfolsvh/p/14371398.html