树状数组板子题(访问与修改)

题目链接

http://acm.hdu.edu.cn/showproblem.php?pid=1166

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N=5e4+10;
int c[N],a[N];
int n;
int lowbit(int x){
    return x&(-x);
}
int getsum(int x){
    int ans=0;
    while(x>0){
        ans+=c[x];
        x-=lowbit(x);
    }
    return ans;
}
void update(int x,int num){
    while(x<=n){
        c[x]+=num;
        x+=lowbit(x);
    }
}
int main(){
    int t;
    cin>>t;
    for(int k=1;k<=t;k++){
        string cmd;
        cin>>n;
        //input array a
        for(int i=1;i<=n;i++)
            cin>>a[i];
        //init array c
        memset(c,0,sizeof c);    
        for(int i=1;i<=n;i++)
            update(i,a[i]);

        printf("Case %d:\n",k);

        while(1){
            //input command
            cin>>cmd;

            if(cmd=="End") break;
            else if(cmd=="Add"){
                int x,add;
                cin>>x>>add;
                update(x,add);
            }
            else if(cmd=="Sub"){
                int x,sub;
                cin>>x>>sub;
                update(x,-sub);
            }
            else if(cmd=="Query"){
                int x,y;
                cin>>x>>y;
                cout<<getsum(y)-getsum(x-1)<<endl;
            }    
        }
    }
} 

总结

比较简单,只要记住了三个函数,这种基础题就比较容易了。
当时做的时候忘记了cin>>string能不能接收空格了,答案是不能。
若想接收空格,getline(cin,str);getline函数。
再就是string类型能直接进行字符串判等操作。
就注意这几点就ok,实现真的很简单。

全部评论

相关推荐

大清早迷迷糊糊被闹钟叫醒,坐在电脑面前开始答题,硬生生坐了2小时,要是不进面,我都无颜面对我的屁股
在看数据的傻狍子很忙碌:26届还好啦。我昨晚还要跟mt值班降级熔断的测试 , 回来做一下上周的美团笔试 , 做完已经快三点了。只a出1.25。而且手机还断网了4次五六秒,已经心碎了。
投递美团等公司10个岗位 > 美团求职进展汇总
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-31 04:00
神哥不得了:首先我就是在成都,成都的互联网格外的卷,如果是凭现在的简历的话很难找到大厂,建议再添加一个高质量的项目上去,另外专业技能的话最好是超过每一条的一半
点赞 评论 收藏
分享
02-22 20:28
重庆大学 Java
程序员牛肉:首先不要焦虑,你肯定是有希望的。 首先我觉得你得好好想一想自己想要什么。找不到开发岗就一定是失败的吗?那开发岗的35岁危机怎么说?因此无论是找工作还是考公我觉得你都需要慎重的想一想。但你一定要避开这样一个误区:“我是因为找不到工作所以不得不选择考公”。 千万不要这么想。你这个学历挺好的了,因此你投后端岗肯定是有面试机会的。有多少人简历写的再牛逼,直接连机筛简历都过不去有啥用?因此你先保持自信一点。 以你现在的水平的话,其实如果想要找到暑期实习就两个月:一个月做项目+深挖,并且不断的背八股。只要自己辛苦一点,五月份之前肯定是可以找到暑期实习的,你有点太过于高看大家之间的技术差距了。不要焦虑不要焦虑。 除此之外说回你这个简历内容的话,基本可以全丢了。如果想做后端,先踏踏实实做两个项目再说+背八股再说。如果想考公,那就直接备战考公。 但是但是就像我前面说的:你考公的理由可以是因为想追求稳定,想追求轻松。但唯独不能是因为觉得自己找不到工作。不能这么小瞧自己和自己的学历。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务