当前位置: 首页 > wzjs >正文

一个完整的网站设计需要的技术官网排名优化

一个完整的网站设计需要的技术,官网排名优化,网站服务器商,做振动盘的企业网站题目描述 给出一个长为 n n n 的数列,以及 n n n 个操作,操作涉及区间加法,区间求和。 输入格式 第一行输入一个数字 n n n。 第二行输入 n n n 个数字,第 i 个数字为 a i a_i ai​,以空格隔开。 接下来输入…

题目描述

给出一个长为 n n n 的数列,以及 n n n 个操作,操作涉及区间加法,区间求和。

输入格式

第一行输入一个数字 n n n

第二行输入 n n n 个数字,第 i 个数字为 a i a_i ai,以空格隔开。

接下来输入 n n n 行询问,每行输入四个数字 o p t , l , r , c opt,l,r,c opt,l,r,c,以空格隔开。

opt = 0,表示将位于 [ l , r ] [l, r] [l,r] 的之间的数字都加 c c c

opt = 1,表示询问位于 [ l , r ] [l, r] [l,r] 的所有数字的和 m o d ( c + 1 ) \bmod (c+1) mod(c+1)

输出格式

对于每次询问,输出一行一个数字表示答案。

样例

样例输入1:

4
1 2 2 3
0 1 3 1
1 1 4 4
0 1 2 2
1 1 2 4

样例输出1:

1
4

数据范围

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 50000 1 \le n \le 50000 1n50000 − 2 31 ≤ o t h e r s , a n s ≤ 2 31 − 1 -2^{31} \le others,ans \le 2^{31} - 1 231others,ans2311

题解

与数列分块1类似,区间加法如果是散块就直接加,整块就在整块上打标记。询问时散块直接枚举,整块将预处理的整块的和加上。

块长建议开 n 0.66 n^{0.66} n0.66,这样会更快。

#include<bits/stdc++.h>
using namespace std;
int n;
long long a[51010];
struct kuai{long long kuai_cnt, kuai_len, belong[51010], add[310], b[51010];long long kuai[310];void init(){kuai_len = sqrt(n);kuai_cnt = (n + kuai_len - 1) / kuai_len;for(int i = 1; i <= kuai_cnt; ++ i){for(int j = (i - 1) * kuai_len + 1; j <= i * kuai_len; ++ j){kuai[i] += a[j];belong[j] = i;b[j] = a[j];}}}void change(int l, int r, int d){if(belong[l] == belong[r]){for(int i = l; i <= r; ++ i){b[i] += d;}kuai[belong[l]] += (r - l + 1) * d;}else{for(int i = l; i <= belong[l] * kuai_len; ++ i){b[i] += d;kuai[belong[l]] += d;}for(int i = belong[l] + 1; i <= belong[r] - 1; ++ i){add[i] += d;kuai[i] += d * (min((long long)n, i * kuai_len) - (i - 1) * kuai_len );}for(int i = (belong[r] - 1) * kuai_len + 1; i <= r; ++ i){b[i] += d;kuai[belong[r]] += d;}}}long long query(int l, int r){if(belong[l] == belong[r]){long long ans = 0;for(int i = l; i <= r; ++ i){ans += b[i] + add[belong[l]];}return ans;}else{long long ans = 0;for(int i = l; i <= belong[l] * kuai_len; ++ i){ans += b[i] + add[belong[l]];}for(int i = belong[l] + 1; i <= belong[r] - 1; ++ i){ans += kuai[i];}for(int i = (belong[r] - 1) * kuai_len + 1; i <= r; ++ i){ans += b[i] + add[belong[r]];}return ans;}}
}k;
int main(){scanf("%d", &n);for(int i = 1; i <= n; ++ i){scanf("%d", &a[i]);}k.init();for(int i = 1; i <= n; ++ i){int op, l, r, d;scanf("%d %d %d %d", &op, &l, &r, &d);if(op == 0){k.change(l, r, d);}else{printf("%lld\n", k.query(l, r) % (d + 1));}}return 0;
}
http://www.dtcms.com/wzjs/391585.html

相关文章:

  • 影楼网站建设十大免费最亏的免费app
  • wordpress百度地图页百度seo排名培训
  • wordpress acg站网店推广方法有哪些
  • 大连福佳新城2026年建站吗奶茶的营销推广软文
  • 做竞彩网站代理犯法么seo学堂
  • 太原医疗网站建设指数是什么意思
  • 网站后台登录模板怎么创建网站
  • 网站策划的前景贵州seo技术培训
  • 什么软件制作网站快长春百度网站快速排名
  • 河北网站建设推广营销推广外包公司
  • 建设网站公司 销售额 排行怎样推广自己的app
  • web服务器做网站360网址大全
  • wordpress替换dede武汉关键词seo排名
  • wordpress 时间轴页面360优化大师app
  • 温州15000 做网站的工作武汉网站seo推广
  • 网站建设业务怎么做企业宣传推广
  • 网站登录窗口怎么做业务员用什么软件找客户
  • 企业网站推广总结seo自学
  • 企业宣传网站建设论坛软文案例
  • cms建站系统安装最近五天的新闻大事
  • 乌鲁木齐网络营销型网站个人网站设计模板
  • 海南综合网站百度推广
  • 手机网站制作哪家好网络推广方法的分类
  • 北京公司网站建设报价百度官网认证多少钱一年
  • h5自适应网站建设chrome官网下载
  • 米客优品的网站是哪做的网站关键词在线优化
  • 做五金有哪些网站推广优化关键词步骤
  • 做网站一般哪里找手机怎么做网站免费的
  • 合肥微网站建设东莞seo网站优化排名
  • 易企网站建设公司体育热点新闻