题解:感谢hzwer学长和loj让本蒟蒻能够找到如此合适的入门题做.

这是一道非常标准的分块模板题,本来用打标记的线段树不知道要写多少行,但是分块只有这么几行,极其高妙.

代码如下:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int tag[],a[],lump[];
int n,sz; void add(int l,int r,int c)
{
for(int i=l;i<=min(lump[l]*sz,r);i++)
{
a[i]+=c;
}
if(lump[l]!=lump[r])
{
for(int i=(lump[r]-)*sz+;i<=r;i++)
{
a[i]+=c;
}
}
for(int i=lump[l]+;i<=lump[r]-;i++)
{
tag[i]+=c;
}
} int main()
{
int opt,l,r,c;
scanf("%d",&n);
sz=sqrt(n);
for(int i=;i<=n;i++)
{
lump[i]=(i-)/sz+;
}
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
while(n--)
{
scanf("%d%d%d%d",&opt,&l,&r,&c);
if(!opt)
{
add(l,r,c);
}
else
{
printf("%d\n",a[r]+tag[lump[r]]);
}
}
}

LibreOJ 6277 数列分块入门 1(分块)的更多相关文章

  1. LibreOJ 6277. 数列分块入门 1 题解

    题目链接:https://loj.ac/problem/6277 题目描述 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,单点查值. 输入格式 第一行输入一个数字 \( ...

  2. LibreOJ 6277. 数列分块入门 1

    题目链接:https://loj.ac/problem/6277 参考博客:https://www.cnblogs.com/stxy-ferryman/p/8547731.html 两个操作,区间增加 ...

  3. LibreOJ 6277. 数列分块入门 2

    题目链接:https://loj.ac/problem/6278 参考博客:https://blog.csdn.net/qq_36038511/article/details/79725027 这题我 ...

  4. LibreOJ 6280 数列分块入门 4(分块区间加区间求和)

    题解:分块的区间求和比起线段树来说实在是太好写了(当然,复杂度也高)但这也是没办法的事情嘛.总之50000的数据跑了75ms左右还是挺优越的. 比起单点询问来说,区间询问和也没有复杂多少,多开一个su ...

  5. LibreOJ 6278 数列分块入门 2(分块)

     题解:非常高妙的分块,每个块对应一个桶,桶内元素全部sort过,加值时,对于零散块O(sqrt(n))暴力修改,然后暴力重构桶.对于大块直接整块加.查询时对于非完整块O(sqrt(n))暴力遍历.对 ...

  6. LibreOJ 6281 数列分块入门 5(分块区间开方区间求和)

    题解:区间开方emmm,这马上让我想起了当时写线段树的时候,很显然,对于一个在2^31次方以内的数,开方7-8次就差不多变成一了,所以我们对于每次开方,如果块中的所有数都为一了,那么开方也没有必要了. ...

  7. LibreOJ 6279 数列分块入门 3(分块+排序)

    题解:自然是先分一波块,把同一个块中的所有数字压到一个vector中,将每一个vector进行排序.然后对于每一次区间加,不完整的块加好后暴力重构,完整的块直接修改标记.查询时不完整的块暴力找最接近x ...

  8. [Libre 6281] 数列分块入门 5 (分块)

    水一道入门分块qwq 题面:传送门 开方基本暴力.. 如果某一个区间全部都开成1或0就打上标记全部跳过就行了 因为一个数开上个四五六次就是1了所以复杂度能过233~ code: //By Menteu ...

  9. LOJ.6284.数列分块入门8(分块)

    题目链接 \(Description\) 给出一个长为n的数列,以及n个操作,操作涉及区间询问等于一个数c的元素,并将这个区间的所有元素改为c. \(Solution\) 模拟一些数据可以发现,询问后 ...

随机推荐

  1. 2018-2019 20165226 Exp5 MSF基础应用

    2018-2019 20165226 Exp5 MSF基础应用 目录 一.实验内容说明及基础问题回答 二.实验过程 Task1 主动攻击实践 ms08_067 ms17_010 Task2 针对浏览器 ...

  2. java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1.5导致的报错format函数第二个参数不对,要求是Object[])

    package hello; import java.util.Arrays; public class 实验三更正版 { public static void main(String[] args) ...

  3. JavaScript-Tool:Numeral.js

    ylbtech-JavaScript-Tool:Numeral.js A javascript library for formatting and manipulating numbers. 1. ...

  4. tsql 循环id读取

    declare @IDList as varchar(max) declare @ID as int declare @i as int set @IDList='' )) + ',' from ta ...

  5. java操作hbase1.3.1的增删改查

    我的eclipse程序在windows7机器上,hbase在linux机器上 1,首先在C:\Windows\System32\drivers\etc下面的HOSTS文件,加上linux 集群 2.直 ...

  6. 提示ORA-01144: File size (13107200 blocks) exceeds maximum of 4194303 blocks 最大4194303 block(转)

    并不是100g的表空间,是100g的数据文件.一般情况下,单个数据文件的最大为32g.解决方法:1.创建多个数据文件,都不能超过32g2.创建大表空间.create bigfile tablespac ...

  7. PHP mysqli的prepare准备语句使用说明

    mysqli对prepare的支持对于大访问量的网站是很有好处的,它极大地降低了系统开销,而且保证了创建查询的稳定性和安全性.prepare准备语句分为绑定参数和绑定结果,下面将会一一介绍! (1)绑 ...

  8. 学习MongoDB 三: MongoDB无法启动的解决方法

    一简介 我们之前介绍了MongoDB入门(安装与配置),我们今天在打开MongDB时,我们先运行cmd.exe进入dos命令界面,然后进入cd  D:\mongodb\bin目录下,启动服务或者mon ...

  9. python之路之装饰器

    一 装饰器进化之路1) import time def index(): start_time=time.time() time.sleep() print('welcome to index wor ...

  10. HTML(具体代码看笔记本)

    参考:https://www.cnblogs.com/liwenzhou/p/7988087.html 一, HTML   1. HTML结构   2. 标签    1. 块儿级标签     h1~h ...