zoukankan      html  css  js  c++  java
  • b_nk_热心的牛牛 & 三角形(思维题:二分 | 斐波那契变形)

    热心的牛牛

    牛牛有k颗糖果,n位朋友,怎么分配才能让所有朋友都比自己多,且自己尽量多

    思路:二分+贪心,自己尽量多,然后让朋友尽量不多于自己太多

    typedef long long ll;
    class Solution {
    public:
        ll Maximumcandies(ll n, ll k) {
            ll l=0, r=k, ans=0;
            while (l<=r) {
                ll m=l+(r-l)/2;
                if ((__int128)(m+1)*n+m<=k) ans=m, l=m+1; //一直错,直到找了下这个int类型...
                else r=m-1;
            }
            return ans;
        }
    };
    

    三角形

    小明有一根长度为a的木棒,现在小明想将木棒分为多段,使得取出的任意三段都不能构成三角形,小明想知道木棒最多被分成几段?

    • 不能构成三角形:两边a、b之和小于不小于第三边c
    • 尽量让段数多,就是让a+b=c
    typedef long long ll;
    const int N=60;
    class Solution {
    public:
        ll fac[N+5];
        ll get(ll len) {
            ll ans=0, s=0, i=0;
            while(i<N) {
                s+=fac[i];
                if(s>len) break;
                i++, ans++;
            }
            return ans;
        }
        int stick(ll a) {
            fac[0]=1, fac[1]=1;
            for (int i=2; i<N; i++) fac[i]=fac[i-2]+fac[i-1];
           return get(a);
        }
    };
    
  • 相关阅读:
    1、一条sql查询语句的执行过程
    go 内存分配
    GO Json
    gorm CRUD:读写数据
    go 基于切片的队列实现
    go的错误处理
    grpc
    sqlalchemy 判断字段是否存在
    定时函数
    用Python获取Linux资源信息的三种方法
  • 原文地址:https://www.cnblogs.com/wdt1/p/14014975.html
Copyright © 2011-2022 走看看