题目:无聊的数列

区间增加等差序列,似乎不好维护,等差等差,那就差分呗,单点查询,更加肯定,直接差分,每次加了一个等差序列容易发现只需要对应的差分数组a[l]+=k,a[l+1]...a[r]+=d,a[r+1]-=(r-l)*d+k

查询输出a[1]+a[2]...a[p],然后用线段树维护一下,这个题就做完了。(敲得也是十分顺利,写完直接过编译还输出了正确答案)(不开longlong见祖宗)

代码:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define ls(x) x<<1
#define rs(x) x<<1|1
const int N=1e5+5;
using namespace std;
int n,m,a[N];
namespace segment
{
struct smt
{
int l,r;
long long sum,tag;
smt(int ll,int rr,long long ss,long long tt)
{
l=ll;r=rr;sum=ss;tag=tt;
}
smt(){
}
}e[N<<2];
void update(int x)
{
e[x].sum=e[ls(x)].sum+e[rs(x)].sum;
}
void pushup(int x,int v)
{
e[x].sum+=(e[x].r-e[x].l+1)*v;
e[x].tag+=v;
}
void down(int x)
{
if(e[x].tag!=0)
{
pushup(ls(x),e[x].tag);
pushup(rs(x),e[x].tag);
e[x].tag=0;
}
}
void build(int x,int l,int r)
{
e[x].l=l,e[x].r=r;
if(l==r)
{
e[x].sum=a[r]-a[r-1];
e[x].tag=0;
return ;
}
int mid=(l+r)>>1;
build(ls(x),l,mid);
build(rs(x),mid+1,r);
update(x);
}
void modify(int x,int l,int r,int v)
{
if(l<=e[x].l && e[x].r<=r)
{
e[x].sum+=(e[x].r-e[x].l+1)*v;
e[x].tag+=v;
return ;
}
down(x);
int mid=(e[x].l+e[x].r)>>1;
if(l<=mid)
modify(ls(x),l,r,v);
if(r>mid)
modify(rs(x),l,r,v);
update(x);
}
long long query(int x,int l,int r)
{
if(l<=e[x].l && e[x].r<=r)
return e[x].sum;
down(x);
int mid=(e[x].l+e[x].r)>>1;
long long ret=0;
if(l<=mid)
ret+=query(ls(x),l,r);
if(r>mid)
ret+=query(rs(x),l,r);
return ret;
}
}
using namespace segment;
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
build(1,1,n);
while(m--)
{
int opt,l,r,d,k;
scanf("%d",&opt);
if(opt==1)
{
scanf("%d %d %d %d",&l,&r,&k,&d);
modify(1,l,l,k);
if(l<r)
modify(1,l+1,r,d);
if(r<n)
modify(1,r+1,r+1,-(r-l)*d-k);
}
else
{
scanf("%d",&d);
printf("%lld\n",query(1,1,d));
}
}
return 0;
}

2022春每日一题:Day 26的更多相关文章

  1. <每日一题>题目26:选择排序(冒泡排序改进版)

    ''' 选择排序:选择最小的,以此类推 ''' import random import cProfile def select_Sort(nums): for i in range(len(nums ...

  2. 老男孩IT教育-每日一题汇总

    老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...

  3. PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数

    PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数 最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可 ...

  4. 【JavaScript】【dp】Leetcode每日一题-解码方法

    [JavaScript]Leetcode每日一题-解码方法 [题目描述] 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 'A' -> 1 'B' -> 2 ... 'Z' -& ...

  5. 【python】Leetcode每日一题-前缀树(Trie)

    [python]Leetcode每日一题-前缀树(Trie) [题目描述] Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的 ...

  6. LeetCode 每日一题「判定字符是否唯一」

    我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 题目 ...

  7. 【Java每日一题】20170106

    20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  8. 【Java每日一题】20170105

    20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  9. 【Java每日一题】20170104

    20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  10. 【Java每日一题】20170103

    20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

随机推荐

  1. C语言小游戏: 推箱子 支线(一)--1

    好家伙,考完试了 回顾一下2021 回顾一下某次的作业 妙啊 所以, 做一个推箱子小游戏 1.先去4399找一下关卡灵感 就它了 2.在百度上搜几篇推箱子, 参考其中的"■ ☆"图 ...

  2. KingbaseES 局部索引

    一个列要不要建立btree索引,判断条件是其键值分布是否够离散,比如主键.唯一键,可以建立索引.如果这个列有大量重复的值,则建立索引没有意义. 在生产环境中常会碰到键值分布不均匀的列,如表t1有一个名 ...

  3. Merge Into 语法支持

    KINGBASE 兼容Oracle 语法,实现了merge into 的功能.以下以例子的形式,介绍merge into语法的使用.以下例子在V8R6 ,且 database_mode=oracle ...

  4. [AI]-模型测试和评价指标

    模型测试 import cv2 from torchvision import transforms, datasets, models from torch.utils.data import Da ...

  5. 头文件与main函数

    头文件 1.为什么要使用头文件? 程序如戏 程序中有很多元素(std::cout, system), 都是一个个演员 但是他们之间都互不认识, 但是却要一起合作, 强行编译, 就会导致错误! 得预先介 ...

  6. Mybatis框架搭建

    Mybatis框架搭建 思路: 搭建环境 导入Mybatis 编写代码 测试 一.搭建环境 创建数据库 /* Navicat Premium Data Transfer​ Source Server ...

  7. 当 EDA 遇到 Serverless,亚马逊云科技出招了

    近二三十年来,软件开发领域毫无疑问是发展最为迅速的行业之一. 在上个世纪九十年代,世界上市值最高的公司大多是资源类或者重工业类的公司,例如埃克森美孚或者通用汽车,而现在市值最高的公司中,纯粹的软件公司 ...

  8. day44-反射03

    Java反射03 3.通过反射获取类的结构信息 3.1java.lang.Class类 getName:获取全类名 getSimpleName:获取简单类名 getFields:获取所有public修 ...

  9. 锐捷网关交换机开启dhcp服务

    锐捷网关交换机作为dhcp server: Ruijie(config)#service dhcp        ------>该命令默认不启用,交换机必须配置 Ruijie(config)#i ...

  10. Es 学习笔记 (1)

    目录 前言 什么是es? es数据组织类比 应用场景 核心概念 集群 节点(node) 索引(Index) 文档类型(Type) 文档(Document) Mapping 核心简单域类型 分片(sha ...