本文主要是介绍【树状数组】HUD1556 区间修改单点求值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:
题目分析:很好阿区间修改单点求值
题目问题:1.
1.//手残写成了memset(c,0,sizeof(int));结果wa了
2.//第一一次用cin输入T了
3.//第一次用标准
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int c[100005],n;
int lowbit(int t){return t&(-t);
}void add(int t,int d){while (t<=n){c[t]+=d;t+=lowbit(t);}
}int sum(int t){int ret=0;while(t>0){ret += c[t];t -= lowbit(t);}return ret;
}int main()
{int a,b,i;while (cin>>n,n){memset(c,0,sizeof(c));//手残写成了memset(c,0,sizeof(int));结果wa了for (i=1; i<=n; i++){scanf("%d%d",&a,&b); //一一次用cin输入T了 = =add(a, 1); //要点add(b+1,-1); // }for (i=1; i<n; i++)cout<<sum(i)<<" ";cout<<sum(n)<<endl;}return 0;
}
这篇关于【树状数组】HUD1556 区间修改单点求值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!