蓝桥笔记

蓝桥要多枚举几种情况
1、双指针不要越界
完全二叉树的权值

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 0x7fffffff
int const N=1e5+7;
ll n,m,cnt,ans,p;
ll a[N];
int main(){
    cin >> n;
    ans=-INF;
    for(int i=1;i<=n;++i){
        cin >> a[i];
    }
    int depth=log(n)/log(2)+1;
    int j=1;
    for(int i=1;i<=depth;++i){
        ll z=0;
        while(j<=n&&j<(1<<i)) z+=a[j],++j;
        if(z>ans) ans=z,p=i;
    }
    cout << p;
    return 0;
}

2、等差数列公差可以为0
gcd(0,8)==8 ; gcd(0,0)==0;
z=gcd(a,b); //表示a和b都是z的倍数
所以公差要是所有任意两个数差的因子

等差数列

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 0x7fffffff
int const N=1e5+7;
ll n,m,cnt,ans,p;
ll a[N];
int main(){
    cin >> n;
    for(int i=1;i<=n;++i){
        cin >> a[i];
    }
    sort(a+1,a+n+1);
    ll d=0;
    for(int i=2;i<=n;++i){
        d=__gcd(d,a[i]-a[i-1]);
    }
    if(d==0){
        cout << n;
        return 0;
    }
    ll cnt=(a[n]-a[1])/d+1;
    cout << cnt;
    return 0;
}

3、后缀表达式还原出来有括号,并且固定好了运算顺序
参考博客

4、(a+b)%k==0 表示a与b的和是k的倍数
(a10+b)%k==0 表示...
(a
10%k + b%k)%k==0

全部评论

相关推荐

09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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