HDU1166线段树板子
#我大爷的读入被卡了
#对于ADD,END什么的处理,开个char,然后判断s[0],嘛
自己调的代码~
#include <iostream> #include <math.h> #include <string.h> #include <vector> #include <map> #include <queue> #include <stdio.h> #include <algorithm> #include <cstdio> using namespace std; int n,input[500000]; struct node{ int l,r,sum; }tree[500000]; void build(int i,int l,int r) { tree[i].l=l; tree[i].r=r; if(l==r) { tree[i].sum=input[l]; return; } int mid=(l+r)>>1; build(i*2,l,mid); build(i*2+1,mid+1,r); tree[i].sum=tree[i*2].sum+tree[i*2+1].sum; } void update(int i,int id,int k) { if(tree[i].l==tree[i].r&&tree[i].l==id) { tree[i].sum+=k; return; } int mid=(tree[i].r+tree[i].l)>>1; if(id<=mid) { update(i*2,id,k); } else { update(i*2+1,id,k); } tree[i].sum=tree[i*2].sum+tree[i*2+1].sum; } int query(int i,int l,int r) { if(tree[i].l>=l&&tree[i].r<=r) { return tree[i].sum; } int ans=0; if(tree[i*2].r>=l) { ans+=query(i*2,l,r); } if(tree[i*2+1].l<=r) { ans+=query(i*2+1,l,r); } return ans; } int main( ) { /* 第一行一个整数T,表示有T组数据。 每组数据第一行一个正整数N(N<=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工兵营地里开始时有ai个人(1<=ai<=50)。 接下来每行有一条命令,命令有4种形式: (1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) (2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30); (3)Query i j ,i和j为正整数,i<=j,表示询问第i到第j个营地的总人数; (4)End 表示结束,这条命令在每组数据最后出现; 每组数据最多有40000条命令 */ //freopen("925.in","r",stdin); int t; cin>>t; for(int i=1;i<=t;i++) { cin>>n; cout<<"Case "<<i<<":"<<endl; for(int j=1;j<=n;j++) { int a; scanf("%d",&input[j]); } build(1,1,n); int ok=0; /* cout<<tree[1].sum<<endl; cout<<tree[2].sum<<endl; cout<<tree[3].sum<<endl; cout<<tree[4].sum<<endl; cout<<tree[5].sum<<endl; cout<<tree[6].sum<<endl; */ while(ok==0) { char s[10]; cin>>s; if(s[0]=='E') { ok=1;break; } if(s[0]=='A'||s[0]=='S') { int i,k; scanf("%d%d",&i,&k); if(s[0]=='S') { k=-k; } update(1,i,k); } else { int i,j; scanf("%d%d",&i,&j); int ans=query(1,i,j); cout<<ans<<endl; } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)