Codeforces 311D Interval Cubing 数学 + 线段树 (看题解)
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 数学 + 线段树 (看题解)相关推荐
- Codeforces311D. Interval Cubing 神线段树
一个操作:把区间每个数都变为立方. 一个询问:区间的和. 看了题解简直sxbk,首先我们可以发现n对于线段树的题目来说是比较小的,再加上codeforces强大的评测机线段树的范围是不是有点小... ...
- Codeforces 671C Ultimate Weirdness of an Array 线段树 (看题解)
Ultimate Weirdness of an Array 写不出来, 日常好菜啊.. 考虑枚举GCD, 算出一共有多少个对 f(l, r) <= GCD, 我们用fuc[ i ] 表示的是在 ...
- Codeforces 213E Two Permutations 线段树 (看题解)
Two Permutations 关键是没想到按大小顺序把第二个排列一个一个加入线段树, 然后线段树维护整体的hash值, 得到的hs值减去一个sub 之后与, 第一个排列的hash值比较. #inc ...
- CF311D Interval Cubing 数学、线段树
CF311D Interval Cubing 数学.线段树 数学太重要了..有些人知道点结论就喜欢搞个数学包装水题,欺负吾等数学学渣啊... CF有官方题解,不过我还是记录一下吧. 这是个线段树的经典 ...
- Codeforces 444C DZY Loves Colors 线段树区间更新
// Codeforces 444C DZY Loves Colors 线段树区间更新// 题目链接:// http://codeforces.com/problemset/problem/444/C ...
- 洛谷 P3373 【模板】线段树 2 题解
洛谷 P3373 [模板]线段树 2 题解 题面 题目链接:[戳这里](https://www.luogu.org/problemnew/show/P3373) 题目描述 输入输出格式 输入输出样例 ...
- codeforces 581B Luxurious Houses(线段树点更新,区间查询)
题目链接: http://codeforces.com/problemset/problem/581/B 题目大意: 给n个不同高度的房子,要求当对于第i个房子来说,他要严格的比后面的房子都高. 思路 ...
- codeforces 609F Frogs and mosquitoes 线段树+二分+multiset
http://codeforces.com/problemset/problem/609/F There are n frogs sitting on the coordinate axis Ox. ...
- CodeForces - 1557D Ezzat and Grid(线段树+dp)
题目链接:点击查看 题目大意:给出 nnn 个 010101 串,现在问最少需要删掉多少个串,才能使得剩下的串拼起来是连通的 规定两个 010101 串是连通的,当且仅当存在至少一列,在两个串中都为 ...
最新文章
- Excel访问局域网中OLAP方案
- AVFoundation之如何从摄像头获取图像
- jQuery的AJAX
- vue watch监听某输入框中是否有值,然后改变某输入框的属性值
- 区块链应用 | 高烧的区块链,被误读的区块链
- uva 12730(期望经典)
- 黑大选修计算机模拟物理学,黑龙江大学学分制选课指南.doc
- 背单词App-单词播放器10.31版本的原理
- AliExpress国际速卖通唰信誉用什么虚拟卡用信可以成功扣款?
- CIS 流程图 UML
- 计算机表格斜杠怎么打,excel表格打斜杠的方法步骤图详解
- 键盘驱动出现黄色感叹号解决方法
- markdown语法手册完整版
- Python自学之路第十四步——与周杰伦有关的岁月
- 计算机局域网络具有哪些功能,局域网的功能有哪些
- rust墙壁升级点什么_明日之后屋子墙壁怎么升级?墙壁升级条件方法一览
- 初中生怎样学习编程语言?
- python 判断是否为数字(整型、浮点型),Python中判断输入是否为数字的实现代码
- c++算法:四数之和---固定两数,用夹逼法
- 俄罗斯开发者赢得Facebook Hacker Cup大赛 楼天成获季军
热门文章
- python基于ocr的视频字幕提取
- web service 优缺点
- 山东、江苏实施水泥错峰停产,细化到每条生产线
- DIY手动定制一个属于自己的软件安装管理器工具盘[二]
- python两个表格相同数据筛选_如何将多个表格中数据筛选汇总在一个表格里?
- 下载keep运动软件_Keep下载_Keep安卓版下载_Keep app下载-太平洋下载中心
- 以卖货为目的得消费返利是合法的吗?又该如何操作?
- 避免过多if - else的新姿势:策略模式、工厂 + 策略
- 查询京东快递物流状态,快速筛选出代收的单号
- Python OpenCV 修改一寸照片底色,图像处理取经之旅第 20 天