Interval Cubing

这种数学题谁顶得住啊。

因为 (3 ^ 48) % (mod - 1)为 1 , 所以48个一个循环节, 用线段树直接维护。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ull unsigned long longusing namespace std;const int N = 1e5 + 7;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 95542721;
const double eps = 1e-6;
const double PI = acos(-1);int n, q;#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
int a[N << 2][48], lazy[N << 2];inline void pull(int rt) {for(int i = 0; i < 48; i++) {a[rt][i] = a[rt << 1][i] + a[rt << 1 | 1][i];if(a[rt][i] >= mod) a[rt][i] -= mod;}
}inline void push(int rt) {lazy[rt] %= 48;if(lazy[rt]) {lazy[rt << 1] += lazy[rt];lazy[rt << 1 | 1] += lazy[rt];rotate(a[rt << 1], a[rt << 1] + lazy[rt], a[rt << 1] + 48);rotate(a[rt << 1 | 1], a[rt << 1 | 1] + lazy[rt], a[rt << 1 | 1] + 48);lazy[rt] = 0;}
}void build(int l, int r, int rt) {if(l == r) {scanf("%d", &a[rt][0]);a[rt][0] %= mod;for(int i = 1; i < 48; i++)a[rt][i] = 1LL * a[rt][i - 1] * a[rt][i - 1] % mod * a[rt][i - 1] % mod;return;}int mid = l + r >> 1;build(lson); build(rson);pull(rt);
}void update(int L, int R, int l, int r, int rt) {if(l >= L && r <= R) {lazy[rt]++;rotate(a[rt], a[rt] + 1, a[rt] + 48);return;}push(rt);int mid = l + r >> 1;if(L <= mid) update(L, R, lson);if(R > mid)  update(L, R, rson);pull(rt);
}int query(int L, int R, int l, int r, int rt) {if(l >= L && r <= R) return a[rt][0];push(rt);int mid = l + r >> 1;if(R <= mid) return query(L, R, lson);else if(L > mid) return query(L, R, rson);else return (query(L, R, lson) + query(L, R, rson)) % mod;
}int main() {scanf("%d", &n);build(1, n, 1);scanf("%d", &q);while(q--) {int t, L, R;scanf("%d%d%d", &t, &L, &R);if(t == 1) {printf("%d\n", query(L, R, 1, n, 1));} else {update(L, R, 1, n, 1);}}return 0;}/*
*/

转载于:https://www.cnblogs.com/CJLHY/p/10616204.html

Codeforces 311D Interval Cubing 数学 + 线段树 (看题解)相关推荐

  1. Codeforces311D. Interval Cubing 神线段树

    一个操作:把区间每个数都变为立方. 一个询问:区间的和. 看了题解简直sxbk,首先我们可以发现n对于线段树的题目来说是比较小的,再加上codeforces强大的评测机线段树的范围是不是有点小... ...

  2. Codeforces 671C Ultimate Weirdness of an Array 线段树 (看题解)

    Ultimate Weirdness of an Array 写不出来, 日常好菜啊.. 考虑枚举GCD, 算出一共有多少个对 f(l, r) <= GCD, 我们用fuc[ i ] 表示的是在 ...

  3. Codeforces 213E Two Permutations 线段树 (看题解)

    Two Permutations 关键是没想到按大小顺序把第二个排列一个一个加入线段树, 然后线段树维护整体的hash值, 得到的hs值减去一个sub 之后与, 第一个排列的hash值比较. #inc ...

  4. CF311D Interval Cubing 数学、线段树

    CF311D Interval Cubing 数学.线段树 数学太重要了..有些人知道点结论就喜欢搞个数学包装水题,欺负吾等数学学渣啊... CF有官方题解,不过我还是记录一下吧. 这是个线段树的经典 ...

  5. Codeforces 444C DZY Loves Colors 线段树区间更新

    // Codeforces 444C DZY Loves Colors 线段树区间更新// 题目链接:// http://codeforces.com/problemset/problem/444/C ...

  6. 洛谷 P3373 【模板】线段树 2 题解

    洛谷 P3373 [模板]线段树 2 题解 题面 题目链接:[戳这里](https://www.luogu.org/problemnew/show/P3373) 题目描述 输入输出格式 输入输出样例 ...

  7. codeforces 581B Luxurious Houses(线段树点更新,区间查询)

    题目链接: http://codeforces.com/problemset/problem/581/B 题目大意: 给n个不同高度的房子,要求当对于第i个房子来说,他要严格的比后面的房子都高. 思路 ...

  8. codeforces 609F Frogs and mosquitoes 线段树+二分+multiset

    http://codeforces.com/problemset/problem/609/F There are n frogs sitting on the coordinate axis Ox. ...

  9. CodeForces - 1557D Ezzat and Grid(线段树+dp)

    题目链接:点击查看 题目大意:给出 nnn 个 010101 串,现在问最少需要删掉多少个串,才能使得剩下的串拼起来是连通的 规定两个 010101 串是连通的,当且仅当存在至少一列,在两个串中都为 ...

最新文章

  1. Excel访问局域网中OLAP方案
  2. AVFoundation之如何从摄像头获取图像
  3. jQuery的AJAX
  4. vue watch监听某输入框中是否有值,然后改变某输入框的属性值
  5. 区块链应用 | 高烧的区块链,被误读的区块链
  6. uva 12730(期望经典)
  7. 黑大选修计算机模拟物理学,黑龙江大学学分制选课指南.doc
  8. 背单词App-单词播放器10.31版本的原理
  9. AliExpress国际速卖通唰信誉用什么虚拟卡用信可以成功扣款?
  10. CIS 流程图 UML
  11. 计算机表格斜杠怎么打,excel表格打斜杠的方法步骤图详解
  12. 键盘驱动出现黄色感叹号解决方法
  13. markdown语法手册完整版
  14. Python自学之路第十四步——与周杰伦有关的岁月
  15. 计算机局域网络具有哪些功能,局域网的功能有哪些
  16. rust墙壁升级点什么_明日之后屋子墙壁怎么升级?墙壁升级条件方法一览
  17. 初中生怎样学习编程语言?
  18. python 判断是否为数字(整型、浮点型),Python中判断输入是否为数字的实现代码
  19. c++算法:四数之和---固定两数,用夹逼法
  20. 俄罗斯开发者赢得Facebook Hacker Cup大赛 楼天成获季军

热门文章

  1. python基于ocr的视频字幕提取
  2. web service 优缺点
  3. 山东、江苏实施水泥错峰停产,细化到每条生产线
  4. DIY手动定制一个属于自己的软件安装管理器工具盘[二]
  5. python两个表格相同数据筛选_如何将多个表格中数据筛选汇总在一个表格里?
  6. 下载keep运动软件_Keep下载_Keep安卓版下载_Keep app下载-太平洋下载中心
  7. 以卖货为目的得消费返利是合法的吗?又该如何操作?
  8. 避免过多if - else的新姿势:策略模式、工厂 + 策略
  9. 查询京东快递物流状态,快速筛选出代收的单号
  10. Python OpenCV 修改一寸照片底色,图像处理取经之旅第 20 天