题意

题目链接

Sol

不会卡常,自愧不如。下面的代码只有66分。我实在懒得手写平衡树了。。

思路比较直观:拿个set维护每个数出现的位置,再写个线段树维护区间和

#include<bits/stdc++.h>
#define LL long long
const int MAXN = 5e5 + 10, INF = 1e9 + 7;
using namespace std;
template<typename A, typename B> inline bool chmax(A &x, B y) {if(y > x) {x = y; return 1;}else return 0;
}
template<typename A, typename B> inline bool chmin(A &x, B y) {if(y < x) {x = y; return 1;}else return 0;
}
inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}
int N, M, op[MAXN], ql[MAXN], qr[MAXN], val[MAXN];
LL a[MAXN];
bool ha[MAXN];
set<int> s[MAXN];
void gao(int pos,  int x) {for(int i = 1; i * i <= x; i++) {if(x % i == 0) {if(ha[i]) s[i].insert(pos);if(i != (x / i))if(ha[x / i]) s[x / i].insert(pos);}}
}
#define lb(x) (x & (-x))
LL T[MAXN];
void Add(int p, int v) {while(p <= N) T[p] += v, p += lb(p);
}
LL Sum(int x) {LL ans = 0;while(x) ans += T[x], x -= lb(x);return ans;
}
LL Query(int l, int r) {return Sum(r) - Sum(l - 1);
}
void Modify(int p, int v) {Add(p, -a[p]);Add(p, a[p] / v);
}void Change(int l, int r, int x) {auto it = s[x].lower_bound(l);while(1) {int pos = *it;if(it == s[x].end() || pos > r) return ;if(a[pos] % x != 0) {it++; s[x].erase(prev(it)); continue;}else Modify(pos, x), a[pos] /= x;it++;}
}
int main() {
//  freopen("a.in", "r", stdin);N = read(); M = read();for(int i = 1; i <= N; i++) a[i] = read(), Add(i, a[i]);for(int i = 1; i <= M; i++) {op[i] = read(), ql[i] = read(); qr[i] = read();if(op[i] == 1) val[i] = read(), ha[val[i]] = 1;}for(int i = 1; i <= N; i++) gao(i, a[i]);for(int i = 1; i <= M; i++) {if(op[i] == 1) {if(val[i] != 1) Change(ql[i], qr[i], val[i]);} else cout << Query(ql[i], qr[i]) << '\n';}return 0;
}

转载于:https://www.cnblogs.com/zwfymqz/p/10357651.html

洛谷P3987 我永远喜欢珂朵莉~(set 树状数组)相关推荐

  1. 洛谷P3987 我永远喜欢珂朵莉~ 树状数组+vector(暴力)

    题目链接:我永远喜欢珂朵莉- 在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到 ...

  2. 珂朵莉树(永远喜欢珂朵莉/doge)

    目录 前言 可能用到前置知识 背景 构建珂朵莉树 核心函数 珂朵莉树在实际题目使用 对珂朵莉树的一些感想 最后的最后 前言 最近刚刚学内容大概是借鉴的吧,感觉这个数据结构不仅简单,还很强,有着非常柯学 ...

  3. [BZOJ4889][洛谷P3759][TJOI2017]不勤劳的图书管理员 分块+树状数组

    题目描述 加里敦大学有个帝国图书馆,小豆是图书馆阅览室的一个书籍管理员.他的任务是把书排成有序的,所以无序的书让他产生厌烦,两本乱序的书会让小豆产生这两本书页数的和的厌烦度.现在有n本被打乱顺序的书, ...

  4. 【洛谷5069】纵使日薄西山【set】【树状数组】

    传送门 最nb的就是这种算法简单思维困难的题. 题目说,选最大,将左中右三个一起减少. 使用瞪眼法你要发现一个性质: 修改一个数,那左中右的相对大小不变.所以它左右的数不会被修改,永远不会.因为其它数 ...

  5. 洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分

    题目:https://www.luogu.org/problemnew/show/P1527 不难想到(?)可以用二维树状数组.但维护什么?怎么查询是难点. 因为求第k小,可以考虑记权值树状数组,把比 ...

  6. 洛谷 P3353 在你窗外闪耀的星星(树状数组)

    利用数组在 x 处做个映射,为 x 点处的亮度之和,这样利用树状数组在区间查询的时候要注意一下端点的情况 从位置 1 开始,一直到 1e5,寻找最大的区间和,复杂度为 O(1e5logn),不开 o2 ...

  7. [转]我的数据结构不可能这么可爱!——珂朵莉树(ODT)详解

    参考资料: Chtholly Tree (珂朵莉树) (应某毒瘤要求,删除链接,需要者自行去Bilibili搜索) 毒瘤数据结构之珂朵莉树 在全是珂学家的珂谷,你却不知道珂朵莉树?来跟诗乃一起学习珂朵 ...

  8. 一种黑科技:珂朵莉树

    首先要明白的是:珂朵莉树(ODT)是一种用来骗分的暴力数据结构. 珂朵莉树的思想是利用集合set,把相同且连续的元素合并为一个个区间,从而进行区间修改:因此,珂朵莉树是区间的集合,这点可以通过定义结构 ...

  9. 浅谈珂朵莉树(ODT)

    前言 珂学家狂喜( 文章目录 前言 一.珂朵莉树来源 二.珂朵莉树 1.珂朵莉树有什么用? 2.原理是什么? a.存储 b.分割结点 c.推平 d.剩余操作 3.复杂度分析 三.珂朵莉树例题 1.P4 ...

最新文章

  1. ChemDataExtractor:从PDF、HTM、文本等中提取化学数据
  2. java对文本文件进行操作:读取、修改、添加、删除、重命名等
  3. phpcms mysql 事务_phpcms某站点MySQL报错注入
  4. superset中的json数据转csv
  5. No result defined for action action.QueryAction and result result
  6. 手机 html 折叠效果,HTML5仿苹果手机的面板合拢折叠效果
  7. WPF设计の自定义窗体
  8. eatwhatApp开发实战(二)
  9. hadoop api 复制文件_Hadoop核心架构是怎样的?
  10. vofuria的开发(3)将vuforia引入新建立的工程
  11. 计算机常用算法对照表整理
  12. SPSS入门教程——如何分析两个变量之间的关联度?
  13. 因为计算机丢失amd,amdxatasys丢失或损坏,windows丢失sys文件
  14. 电子墨水屏技术原理介绍
  15. linux命令显示文件内容行号|linux将内容以行号显示出来
  16. 使用Simu5G实现车联网V2X通信过程(两个简单的示例)
  17. 【CSP-S2019模拟】09.24比赛总结
  18. Zeppelin导入额外jar包方法
  19. 字符串操作函数的实现【详解】
  20. 电路设计的3W原则、5W原则、3H原则、5H原则、20H原则、五五规则

热门文章

  1. python爬虫requests模块
  2. SpringBoot JPA多对一 持久化是报错object references an unsaved transient instance - save the transient instanc
  3. 【开发问题】Android——Fragment must be a public static class to be properly recreated from instanc
  4. tensorflow与pytorch 一起安装
  5. Java删除Maven下的.lastUpdated文件
  6. 83.【JQuery.Ajax】
  7. max31865模块 PT100测温 PT1000测温 接线说明要点说明 使用说明 程序 单片机
  8. 邮箱授权码正确,却连接失败
  9. 使用友盟进行app的增量更新
  10. 深入了解 Flex 属性