蓝桥笔记
蓝桥要多枚举几种情况
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 表示...
(a10%k + b%k)%k==0
曼迪匹艾公司福利 121人发布
查看10道真题和解析