【AC】

  1. #include<iostream>
  2. #include<math.h>
  3. #include<cstring>
  4.  
  5. using namespace std;
  6.  
  7. typedef long long LL;
  8.  
  9. int N,M;
  10. int type,l,r,v;
  11. int A[+];
  12. LL TreeArr[+];
  13. int lowbit(int i)
  14. {
  15. return i&(-i);
  16. }
  17.  
  18. void toValue(int i,int num)
  19. {
  20. while(i<=N)
  21. {
  22. TreeArr[i] += num;
  23. i += lowbit(i);
  24. }
  25. }
  26.  
  27. LL sum(int i)
  28. {
  29. LL total = ;
  30. while(i != )
  31. {
  32. total += TreeArr[i];
  33. i -= lowbit(i);
  34. }
  35. return total;
  36. }
  37.  
  38. int main(){
  39.  
  40. cin>>N>>M;
  41. memset(TreeArr,,sizeof(TreeArr));
  42. for(int j=; j<=N; j++){
  43. cin>>A[j];
  44. toValue(j, A[j]);
  45. }
  46. while(M--){
  47. cin>>type;
  48. if(type==){
  49. cin>>l>>r>>v;
  50. if(v==) continue;
  51. for(int i=l; i<=r; i++){
  52. if(A[i]>=v&&A[i]%v==){
  53. toValue(i, A[i]/v-A[i]);
  54. A[i] /= v;
  55. }
  56. }
  57. }else if(type==){
  58. cin>>l>>r;
  59. cout<< sum(r) - sum(l-)<<endl;
  60. }
  61. }
  62. return ;
  63. }

【90分】

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<string>
  5. #include<cmath>
  6. #include<algorithm>
  7. #include<queue>
  8. #include<map>
  9. using namespace std;
  10. typedef long long ll;
  11. const int maxn=1e5+;
  12. ll a[maxn];
  13. ll tree[maxn];
  14. int n,m;
  15. int lowbit(int x){
  16. return x&(-x);
  17. }
  18. void add(int k,ll x){
  19. while(k<=n){
  20. tree[k]+=x;
  21. k+=lowbit(k);
  22. }
  23. }
  24. ll query(int k){
  25. ll res=;
  26. while(k){
  27. res+=tree[k];
  28. k-=lowbit(k);
  29. }
  30. return res;
  31. }
  32. void init(){
  33. memset(tree,,sizeof(tree));
  34. }
  35. int main(){
  36. while(~scanf("%d%d",&n,&m)){
  37. init();
  38. for(int i=;i<=n;i++){
  39. scanf("%lld",&a[i]);
  40. add(i,a[i]);
  41. }
  42. int opt,l,r;
  43. ll v;
  44. for(int i=;i<=m;i++){
  45. scanf("%d%d%d",&opt,&l,&r);
  46. if(opt==){
  47. scanf("%lld",&v);
  48. if(v==) continue;
  49. for(int j=l;j<=r;j++){
  50. if(a[j]>=v&&a[j]%v==){
  51. add(j,a[j]/v-a[j]);
  52. a[j]/=v;
  53. }
  54. }
  55. }else{
  56. ll ans=query(r)-query(l-);
  57. printf("%lld\n",ans);
  58. }
  59. }
  60. }
  61. return ;
  62. }

【CCF】除法 树状数组的更多相关文章

  1. 【HDU4947】GCD Array(莫比乌斯反演+树状数组)

    点此看题面 大致题意: 一个长度为\(n\)的数组,实现两种操作:将满足\(gcd(i,k)=d\)的\(a_i\)加上\(v\),询问\(\sum_{i=1}^xa_i\). 对于修改操作的推式子 ...

  2. inline void 树状数组神奇感悟【雾

    才发现扫描线可以用树状数组搞... 致远星患者 (另外根据这篇博文的内容怎么越来越感觉自己往 PJ 入门靠拢了...) 还有一点,咱把树状数组当做线段树来康的话其实一切都会很清晰,这个来张四合一的图: ...

  3. neuoj1472 yuki的氪金之旅(倒置树状数组

    这题一直re不造为啥..后来yww大神把树状数组“倒过来”就过了,倒过来的好处是算sum(d[i]+1)就行,不涉及除法,不用求逆元. 题意:初始手牌颜值是0,一共抽卡n次,第i次抽卡有pi的概率能抽 ...

  4. 牛客网暑期ACM多校训练营(第五场) F - take —— 期望+树状数组+逆元

    看到一篇好的博客特意转出来观摩大佬:转:https://blog.csdn.net/greybtfly/article/details/81413526 题目大意:给n个箱子排成一排,从头到尾按顺序依 ...

  5. 康拓展开 & 逆康拓展开 知识总结(树状数组优化)

    康拓展开 : 康拓展开,难道他是要飞翔吗?哈哈,当然不是了,康拓具体是哪位大叔,我也不清楚,重要的是 我们需要用到它后面的展开,提到展开,与数学相关的,肯定是一个式子或者一个数进行分解,即 展开. 到 ...

  6. 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)

    qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...

  7. BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2221  Solved: 1179[Submit][Sta ...

  8. bzoj1878--离线+树状数组

    这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...

  9. codeforces 597C C. Subsequences(dp+树状数组)

    题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...

随机推荐

  1. Python小脚本程序

    本文旨在搜集最简单最原子性的代码块,简单清晰容易阅读,然后由用户自己组合.Python代码排版请自行修改. 这里是索引目录: 1. 下载网站文件 2. 下载网站多个文件 1. 下载网站文件 impor ...

  2. SQL查询出每门课都大于80 分的学生姓名

    Course表如下: 查询出每门课都大于80 分的学生姓名有两种方法. 1.select  distinct name from Course where name not in (select di ...

  3. 关于微信小程序 textarea组件在fixed定位的模块中随页面移动问题

    具体的情况: 在模拟器中没问题,可是在真机下就出现以下问题,  <textarea  />在一个view盒子中,view盒子是固定定位,页面滑动时候,固定定位的盒子会定在屏幕的相对位置,但 ...

  4. swl字符串

    创建字符串方法 去掉时间戳 #define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT ...

  5. API调用微信getWXACodeUnlimit()获取小程序码

    微信文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/qr-code/getWXACodeUnlimit.html? ...

  6. IDEA注释模板设置

    1. 文件注释 1.1 Java类文件注释 Setting -> Editor -> File and Code Templates -> Includes -> File H ...

  7. 1048: [HAOI2007]分割矩阵

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1184  Solved: 863[Submit][Status][Discuss] Descripti ...

  8. Ansible指令和常用模块使用

    这里文章记录一下ansible的指令选项和常用的模块使用 ansible指令选项 -m:要执行的模块,默认为command -a:模块的参数 -u:ssh连接的用户名,默认用root,ansible. ...

  9. 十、Shell 函数

    Shell 函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()] { action ...

  10. 课时5.什么是URL(理解)

    其实浏览器的地址栏中输入的地址就是一个URL. http://127.0.0.1/index.html(浏览器会自动添加:80) http://127.0.0.1:80/index.html(这是浏览 ...