2022春每日一题:Day 26


题目:无聊的数列
区间增加等差序列,似乎不好维护,等差等差,那就差分呗,单点查询,更加肯定,直接差分,每次加了一个等差序列容易发现只需要对应的差分数组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的更多相关文章
- <每日一题>题目26:选择排序(冒泡排序改进版)
''' 选择排序:选择最小的,以此类推 ''' import random import cProfile def select_Sort(nums): for i in range(len(nums ...
- 老男孩IT教育-每日一题汇总
老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...
- PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数
PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数 最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可 ...
- 【JavaScript】【dp】Leetcode每日一题-解码方法
[JavaScript]Leetcode每日一题-解码方法 [题目描述] 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 'A' -> 1 'B' -> 2 ... 'Z' -& ...
- 【python】Leetcode每日一题-前缀树(Trie)
[python]Leetcode每日一题-前缀树(Trie) [题目描述] Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的 ...
- LeetCode 每日一题「判定字符是否唯一」
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 题目 ...
- 【Java每日一题】20170106
20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170105
20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170104
20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170103
20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
随机推荐
- 页面POST请求302重定向解决方案
一.在后端Middleware中判断如果是post请求,返回json格式 二.前端全局js中捕获ajax请求进行处理
- .NET 7 性能改进 -- 至今为止最快的.NET平台
2022年8月31日 Stephen Toub 发布的关于 .NET 7 性能改进的博客, 核心主题是 .NET 7 速度很快. 这篇博客非常的长,我尝试将它拷贝到Word 里,拷贝的时间都花了几分钟 ...
- openstack中Neutron组件简解
一.Neutron概述 Neutron 的设计目标是实现"网络即服务(Networking as a Service)".为了达到这一目标,在设计上遵循了基于 SDN 实现网络虚拟 ...
- Oracle_FDW 使用介绍
本文以例子的形式介绍 KingbaseES(Postgresql)数据库如何通过 oracle_fdw 扩展访问Oracle数据库.以下例子在PG12.3 与 KingbaseES V8R6进行过实际 ...
- go 中解析JSON的三种姿势
背景 这是一篇写给0-1年新人的文章,短平快的教会你如何解析json字符串. 示例Json 假设有如下json字符串: { "userName":"admin" ...
- 不建议升级windows11的理由
此文写于2022年9月13日,用于警告那些蠢蠢欲动想升级win11的伙伴. win11发布后,最亮眼的功能当然是自带"安卓模拟器",但作为一名程序开发者的我其实是不愿意马上尝鲜的, ...
- Vite+React搭建开发构建环境实践
前言 使用 Vite 已经有两年了,期间使用它开发过单页面应用,也开发过浏览器扩展插件,对比日常工作中用到的 webpack 构建速度大幅提升,开发体验也好很多. 虽然相比于 webpack 来说简单 ...
- Windows 客户端802.1x的一些设置
802.1x作为网络准入的验证,自然有很多好处.但是在实施过程中也遇到了些小问题.我在这里记录下来,希望对大家有帮助,遇到问题的时候能有个参考. 基于用户验证的方式,当用户修改了密码后,验证失败.此时 ...
- PHP函数小工具
PHP检测IP是否内网地址.保留地址 /** * @param string $ip 被检测的IP * @return bool 是否内网或者保留IP */ public function isInt ...
- Django 之视图层
JsonResponse 1 json格式的数据有什么用 前后端数据交互需要使用json作为过渡,实现跨语言传输数据 2 前后端方法对应 JSON.stringify() - json.dumps( ...