【题解】三角形套娃

题意

种边长为个数为的等边三角形。边长小的三角形可以放入边长大的里面。还需要一个三角形,将所有的三角形可以放入其中,问这个三角形的边长是多少。

题解

首先若大三角形的边长是小三角形的两倍,则一个大三角形可以放入4个小三角形。由于给定的种是边长不相同的三角形们,所以我们可以对于某一种三角形判断其需要多少个别的三角形来装入,对于当前这个三角形的数量,我们第一次除以4向上取整就是需要比他边长大一倍的的三角形的个数了,我们再继续除以4向上取整这样除几次我们就可以得到能装下当前这个三角形所需要的最大三角形边长了。对于给定的每个小三角形,我们都求一个他所需要的最大三角形边长,答案为这些值中的最大值。两种数量的三角形无关是因为,两次枚举实际存在可以复用的关系,所以我们取所有值的最大值即可。

复杂度

时间复杂度为

代码

#include<bits/stdc++.h>
using namespace std;
map<int,long long> mp;
int main()
{
    int n;
    scanf("%d",&n);
    int ans = 0;
    for(int i=0; i<n; i++)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        if(b == 1)
            a++;
        while(b > 1)
        {
            int tmp = (b%4 == 0) ? b/4 : b/4+1;
            b = tmp;
            a++;
        }
        ans = max(ans,a);
    }
    printf("%d\n",ans);
    return 0 ;
}
全部评论

相关推荐

机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务