LeetCode 5187. 收集足够苹果的最小花园周长(式子化简,二分)

Posted live4m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 5187. 收集足够苹果的最小花园周长(式子化简,二分)相关的知识,希望对你有一定的参考价值。

题意:


解法:

∑ i = − n n ∑ j = − n n ∣ i ∣ + ∣ j ∣ 每 个 i 会 被 加 ( 2 n + 1 ) 次 , j 也 是 , 因 此 : = ( 2 n + 1 ) ∗ ( ∑ i = − n n ∣ i ∣ ) ∗ 2 ∑ i = − n n ∣ i ∣ 的 部 分 可 以 用 等 差 数 列 公 式 计 算 . \\sum_{i=-n}^n\\sum_{j=-n}^n|i|+|j|\\\\ 每个i会被加(2n+1)次,j也是,因此:\\\\ =(2n+1)*(\\sum_{i=-n}^n |i|)*2\\\\ \\sum_{i=-n}^n |i|的部分可以用等差数列公式计算. i=nnj=nni+ji(2n+1),j,:=(2n+1)(i=nni)2i=nni.

二分式子中的n,根据式子可以O(1)判断是否满足要求,总复杂度O(log).

code:

#define ll long long
class Solution {
public:
    ll f(ll n){
        return n*(n+1)/2;
    }
    ll cal(ll n){
        return (n*2+1)*(f(n)*2)*2;
    }
    long long minimumPerimeter(long long n) {
        ll ans=0;
        ll l=0,r=1e5;
        cout<<cal(55)<<endl;
        while(l<=r){
            ll mid=(l+r)/2;
            if(cal(mid)>=n)ans=mid,r=mid-1;
            else l=mid+1;
        }
        return ans*2*4;
    }
};

以上是关于LeetCode 5187. 收集足够苹果的最小花园周长(式子化简,二分)的主要内容,如果未能解决你的问题,请参考以下文章

App闪退异常日志收集功能

Haskell - 垃圾收集无法回收足够的空间

LeetCode周赛252场:时隔半年再来练习

LeetCode周赛252场:时隔半年再来练习

LeetCode周赛252场:时隔半年再来练习

iOS闪退日志的收集和解析