-
个人简介
至若春和景明,波澜不惊,上下天光,一碧万顷;沙鸥翔集,锦鳞游泳;岸芷汀兰,郁郁青青。而或长烟一空,皓月千里,浮光跃金,静影沉璧,渔歌互答,此乐何极!
祝福如东海,寿比南山,寿与天齐,万寿无疆,人寿年丰,延年益寿,长命百岁,寿元无量,驻颜益寿 ,南山之寿,龟年鹤寿!
//并查集模板 int p[N]; //并查集,集合 //查找x所在集合 int find(int x) { if(p[x] == x) return p[x]; return p[x] = find(p[x]); } //将x、y合并 void merge(int x, int y) { p[find(x)] = find(y); }
#include <iostream> using namespace std; const int N=2e5+3; int a[N],s[N],f[N],n,m; int ans; int hh,tt,q[N]; void solve() { hh=0,tt=0; ans=-1e18; if(n<=m) ans=max(ans,s[n]); for(int i=1; i<=n; i++) { while(hh<=tt&&q[hh]<i-m) hh++; ans=max(ans,s[i]-s[q[hh]]); while(hh<=tt&&s[i]<s[q[tt]]) tt--; q[++tt]=i; } cout<<ans<<endl; } int main() { cin>>n>>m; for(int i=1; i<=n; i++) cin>>a[i],s[i]=s[i-1]+a[i]; solve(); return 0; }
线段树模板
#include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int maxn=1000010; int n,q; long long sum[maxn<<2],lazy[maxn<<2]; void Pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1]; } void build(int l,int r,int rt){ if(l==r){ scanf("%lld",&sum[rt]); return; } int m=(l+r)>>1; build(lson); build(rson); Pushup(rt); } void update(int L,int R,int v,int l,int r,int rt){ if(L<=l&&r<=R){ sum[rt]+=(r-l+1)*v; // 更新区间和时需要乘以区间长度(r-l+1) lazy[rt]+=v; // 将更新操作记录在lazy数组中 return; } pushdown(lson); // 下推标记到子节点 pushdown(rson); // 下推标记到子节点 int m=(l+r)>>1; if(L<=m) update(L,R,v,lson); // 左子树更新操作 if(m<R) update(L,R,v,rson); // 右子树更新操作 Pushup(rt); // 更新当前节点的值 } void pushdown(int l,int r,int rt){ // 下推标记到子节点并处理延迟标记的操作函数 if(lazy[rt]!=0){ // 如果存在延迟标记,则对左右子节点进行更新操作,并将延迟标记清零 lazy[rt<<1]+=lazy[rt]; // 将延迟标记传递到左子节点 lazy[rt<<1|1]+=lazy[rt]; // 将延迟标记传递到右子节点 sum[rt<<1]+=(r-(l+1)+1)*lazy[rt]; // 更新左子节点的区间和,并加上延迟标记值乘以区间长度(r-(l+1)+1) sum[rt<<1|1]+=(r-(l+1)+1)*lazy[rt]; // 更新右子节点的区间和,并加上延迟标记值乘以区间长度(r-(l+1)+1) lazy[rt]=0; // 将当前节点的延迟标记清零,表示该节点已经处理过延迟标记了 } } long long query(int L,int R,int l,int r,int rt){ pushdown(l,r,rt); // 下推标记到子节点并处理延迟标记的操作函数 if(L<=l&&r<=R){ // 如果查询区间完全包含当前节点区间,则直接返回当前节点的值即可。注意这里不需要再调用pushdown函数了。 return sum[rt]; }else{ // 如果查询区间不完全包含当前节点区间,则需要继续向下查询子节点。注意这里需要再次调用pushdown函数来确保子节点的延迟标记被正确处理。 int m=(l+r)>>1; long long res=0; if(L<=m) res+=query(L,R,lson); // 左子树查询操作,如果查询区间与左子树有交集,则递归查询左子树。否则返回0。注意这里需要再次调用pushdown函数来确保子节点的延迟标记被正确处理。 if(m<R) res+=query(L,R,rson); // 右子树查询操作,如果查询区间与右子树有交集,则递归查询右子树。否则返回0。注意这里需要再次调用pushdown函数来确保子节点的延迟标记被正确处理。 return res; // 返回查询结果。注意这里不需要再调用pushdown函数了。因为只有当查询区间完全包含当前节点区间的时候才会直接返回当前节点的值,而此时已经不需要再处理延迟标记了。所以只有在其他情况下才需要再次调用pushdown函数来处理延迟标记。
ncyz12345! test(4323密码,用户名)
-
通过的题目
-
最近活动
- 2024年国庆C2025&G2027届赛前训练 IOI
- 2024年国庆C2025&G2027届常规训练 IOI
- 2024年8月31日月末测试(C2025届&C2026届) OI
- 2024年8月普及组初赛模拟题 OI
- C2024&C2025届2024年暑假知识巩固赛 乐多
- C2026届2024年暑假知识巩固赛 乐多
- 2024年暑假高温测试 IOI
- 2024年暑假集训测试(20240721) OI
- C2026届2024年7月12日二阶(上)测试 OI
- 2024年7月3日C2025届周末测试 乐多
- 2024年6月16日初三复血赛 乐多
- 2024年6月5日~初二~为高考加油哦 乐多
- 2024年6月5日~初一~为高考加油哦 乐多
- 教师基础语法练习 作业
- 2024年4月30日~假期快乐~clone 作业
- 2024年5月2日~主打一个随心 IOI
- 2024年4月30日~假期快乐~ IOI
- 图论基础 作业
- 搜索剪枝 作业
- 搜索基础 作业
- C2025届2024年2月18日知识巩固赛 乐多
- C2025届2024年2月8日新春赛 乐多
- C2025届2024年2月4日立春赛 OI
- C2026届2024年1月31日新年赛~Happy New Year OI
- C2025届2024年1月30日欢乐赛~Happy OI
- 7.dfs 作业
- C2025届2024年1月27日-寒假集训 作业
- C2025届2023年12月31日元旦跨年赛 OI
- 6.栈_队列 作业
- 5.二分 作业
- C2025届2023年11-12月练习 作业
- C2025届2023年11月18日练习_排序 作业
- C2025届2023年10月20日练习_STL 作业
- C2024届2023年国庆练习(20231002) OI
- C2025届2023年国庆练习(20231005) OI
- C2024届2023年中秋节练习(20230930) IOI
- 2023年暑期初赛知识练习(20230813) OI
- C2025届暑期二阶上练习题(20230730) OI
- C2025届普及组二阶(上)练习(20230725) OI
- C2024届二阶(下)测试题(20230723) OI
题目标签
- 基础语法
- 73
- 动态规划
- 28
- noip
- 22
- dp
- 22
- dfs
- 22
- 数据结构
- 21
- 搜索
- 19
- 循环
- 17
- 普及组
- 14
- 其他
- 13
- 顺序
- 13
- 递归
- 12
- bfs
- 12
- 基础问题
- 10
- stack
- 10
- 模拟
- 10
- 图论
- 10
- 顺序结构
- 9
- 字符串
- 9
- 深搜
- 9