AtCoder Beginner Contest 438 vp补题

放假了 每日vp

A D卡了

A 小细节

cpp 复制代码
void solve(){
  int d,f;cin>>d>>f;
  int x=(d-f+6)/7;//向上取整(d-f)/7
  int ans=f+x*7-d;//看多了几天
  if(ans==0)ans=7;//在这里wa 不会在第0天举行
  cout<<ans<<endl;
}

D 前缀和 前缀最值

区段求和=>前缀和
原式=preAx+preBy−preBx+preCn−preCy=(preAx−preBx)+(preBy−preCy)+preCn原式=preA_x+preB_y-preB_x+preC_n-preC_y\\=(preA_x-preB_x)+(preB_y-preC_y)+preC_n原式=preAx+preBy−preBx+preCn−preCy=(preAx−preBx)+(preBy−preCy)+preCn

变量其实是(preAx−preBx)+(preBy−preCy)(preA_x-preB_x)+(preB_y-preC_y)(preAx−preBx)+(preBy−preCy),两项分别让其最大,得到结果最大值,即满足题意。
x<yx<yx<y,求preA−preBpreA-preBpreA−preB前缀、preB−preCpreB-preCpreB−preC后缀最大值,相加得到结果。

cpp 复制代码
void solve(){
  int n;cin>>n;
  vector<int>a(n+1,0),b(n+1,0),c(n+1,0);
  //求前缀和
  forr(i,1,n){cin>>a[i];a[i]+=a[i-1];}
  forr(i,1,n){cin>>b[i];b[i]+=b[i-1];}
  forr(i,1,n){cin>>c[i];c[i]+=c[i-1];}
  int ans=0;
  vector<int>ab(n+1,-inf),bc(n+2,-inf);
  forr(i,1,n-2){//注意x<y<n x<=n-2
    ab[i]=max(a[i]-b[i],ab[i-1]);
  }
  reforr(i,1,n-1){//y<=n-1
    bc[i]=max(b[i]-c[i],bc[i+1]);
  }
  forr(i,1,n-2)ans=max(ans,ab[i]+bc[i+1]+c[n]);
  cout<<ans<<endl;
}

E ST表

cpp 复制代码
const int N = 2e5+5,B=32, C = 1e6 + 10, mod =1e9+7, inf = 1e18 ;
//st[i][j]:第i个水桶走2^j步到达的位置 s[i][j]:第i个水桶走2^j装的水
int st[N][B],s[N][B];
void solve(){
  int n,q;cin>>n>>q;
  forr(i,1,n){
    cin>>st[i][0];
    s[i][0]=i;
  }
  // forr(j,1,n){
  //   forr(i,1,31){错
  forr(i,1,31){
    forr(j,1,n){
      int mid=st[j][i-1];//会用到其他桶的状态st[mid][i-1]所以外层循环是跳跃数1~31
      st[j][i]=st[mid][i-1];
      s[j][i]=s[j][i-1]+s[mid][i-1];
    }
  }
  forr(i,1,q){
    int t,b;cin>>t>>b;
    int ans=0;
    forr(k,0,31){
      if(t>>k&1){
        ans+=s[b][k];
        b=st[b][k];
      }
    }
    cout<<ans<<endl;
  }
}
相关推荐
redaijufeng11 分钟前
C++雾中风景7:闭包
c++·算法·风景
小欣加油42 分钟前
leetcode287寻找重复数
数据结构·c++·算法·leetcode
尽兴-1 小时前
2.1 向量基础:Embedding、余弦相似度、欧氏距离、向量检索
算法·embedding·欧氏距离·向量检索·余弦相似度
Black蜡笔小新1 小时前
自动化AI算法训练服务器DLTM训推一体工作站赋能多行业智能化升级
人工智能·算法·自动化
怪兽学LLM2 小时前
LeetCode 438 找到字符串中所有字母异位词(Python 固定滑动窗口+字符计数解法)
python·算法·leetcode
满怀冰雪2 小时前
第04篇-双指针算法-从有序数组到回文判断的高频解法
java·算法
CC数学建模2 小时前
2026年江西省研究生数学建模竞赛1题:空间数据分析中的过拟合识别完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
leo__5202 小时前
MATLAB实现牧羊人算法
开发语言·算法·matlab
Gauss松鼠会2 小时前
【GaussDB】GaussDB SMP特性调优详解
java·服务器·前端·数据库·sql·算法·gaussdb
Tisfy2 小时前
LeetCode 3689.最大子数组总值 I:What The Medium
算法·leetcode·题解·贪心·模拟·脑筋急转弯