D-温暖的签到题
链接:https://ac.nowcoder.com/acm/contest/892/D
题意:
思路:
线段树
比赛时思路对的,但是代码写的太乱,没改出来,赛后重写。
Lazy我开二维数组,记录子节点左右对应的范围。
其他的就根普通线段树一样。
代码:
#include <bits/stdc++.h>
using namespace std; typedef long long LL;
const int MAXN = 1e5+10; LL Seg[MAXN*4];
LL Lazy[MAXN*4][2];
int n, m; void PushUp(int root)
{
Seg[root] = Seg[root<<1]+Seg[root<<1|1];
} void PushDown(int root)
{
if (Lazy[root][1] != 0)
{
LL lenl = Lazy[root][0];
LL lenr = Lazy[root][1];
LL lenmid = (lenl+lenr)/2;
Seg[root<<1] = (lenl+lenmid)*(lenmid-lenl+1)/2;
Seg[root<<1|1] = (lenmid+1+lenr)*(lenr-lenmid)/2;
Lazy[root<<1][0] = lenl;
Lazy[root<<1][1] = lenmid;
Lazy[root<<1|1][0] = lenmid+1;
Lazy[root<<1|1][1] = lenr;
Lazy[root][0] = Lazy[root][1] = 0;
}
} void Build(int root, int l, int r)
{
if (l == r)
{
Seg[root] = l;
return;
}
int mid = (l+r)/2;
Build(root<<1, l, mid);
Build(root<<1|1, mid+1, r);
PushUp(root);
} void Update(int root, int l, int r, int ql, int qr)
{
if (r < ql || qr < l)
return;
if (ql <= l && r <= qr)
{
LL lenl = l-ql+1, lenr = r-ql+1;
Seg[root] = (lenl+lenr)*(r-l+1)/2;
Lazy[root][0] = lenl;
Lazy[root][1] = lenr;
return;
}
PushDown(root);
int mid = (l+r)/2;
Update(root<<1, l, mid, ql, qr);
Update(root<<1|1, mid+1, r, ql, qr);
PushUp(root);
} LL Query(int root, int l, int r, int ql, int qr)
{
if (r < ql || qr < l)
return 0LL;
if (ql <= l && r <= qr)
return Seg[root];
PushDown(root);
LL res = 0;
int mid = (l+r)/2;
res += Query(root<<1, l, mid, ql, qr);
res += Query(root<<1|1, mid+1, r, ql, qr);
return res;
} int main()
{
int op, l, r;
cin >> n >> m;
Build(1, 1, n);
while (m--)
{
cin >> op >> l >> r;
if (op == 1)
Update(1, 1, n, l, r);
else
cout << Query(1, 1, n, l, r) << endl;
} return 0;
}
D-温暖的签到题的更多相关文章
- 【西北大学集训队选拔赛】D温暖的签到题(自创数据结构)
题目链接 #include <bits/stdc++.h> #define NUM #define ll long long using namespace std; int n, m; ...
- A 洛谷 P3601 签到题 [欧拉函数 质因子分解]
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- fjwc2019 D3T1 签到题 (贪心)
#184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位 ...
- CTF-练习平台-WEB之 签到题
一.签到题 根据提示直接加群在群公告里就能找到~
- 洛谷P3601签到题(欧拉函数)
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- 【洛谷九月月赛T1】签到题(bsgs)(快速乘)
说好的签到题呢qwq....怎么我签到题都不会啊qwq 之后看了bsgs才发现貌似不是那么那么难fake!!什么东西... 先贴上部分分做法(也就是枚举1的个数,然后每一步都进行取模(这和最后取模结果 ...
- WEB新手之签到题
写一写web新手赛的题. 这是签到题,开始时需要耐心等待页面中字母全部出现. 字母全部出现后,会跳转到另一个界面,如上图所示.F12没什么特别的地方,这题应该有点难度. 按往常一样,先抓包. 按英文提 ...
- EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】
传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...
- HLJU 1221: 高考签到题 (三分求极值)
1221: 高考签到题 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 9 Solved: 4 [Submit][id=1221">St ...
- Different Integers 牛客多校第一场只会签到题
Given a sequence of integers a1, a2, ..., an and q pairs of integers (l1, r1), (l2, r2), ..., (lq, r ...
随机推荐
- SpringMVC拦截器的配置与使用详解
一.SpringMVC拦截器简介 Spring MVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.在springmvc中,定义拦截 ...
- Spring注解实现原理
[Spring如何使用注解机制完成自动装配] Java实例构造时会调用默认父类无参构造方法,Spring正是利用了这一点,让"操作元素的代码"得以执行. [两种处理策略] ( ...
- Yii2使用Redis - 从安装redis到使用 [ 2.0 版本 ]
Yii2使用Redis - 从安装redis到使用 [ 2.0 版本 ] 一.安装Redis和简单配置 1. 下载Redis安装包 地址:http://redis.io/download , 本文选择 ...
- Python: scikit-image binary descriptor
这个用例说明 BRIEF binary description algorithm from skimage import data from skimage import transform as ...
- 洛谷 P4238 [模板] 多项式求逆
题目:https://www.luogu.org/problemnew/show/P4238 看博客:https://www.cnblogs.com/xiefengze1/p/9107752.html ...
- Sleep 比对 (Win32API 与 STL )
OutputDebugStringA("begin 1========"); for (int i = 0; i < 1800; i++) { Sleep(2); } Out ...
- KMP匹配 (1)
---恢复内容开始--- 字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串" ...
- Linux命令总结_查看主机磁盘使用
1.dh -h 查看各个挂载点的使用量 2.du -sh *(星号表示当前所有文件夹)可以查看当前目录下各个文件夹的大小,-s表示只显示当前文件夹(不加-s你可以看到所有文件夹下的子文件夹的大小,太多 ...
- day10servlet编程
Servlet学习的大纲: . servlet概念及相关接口简介 . servet 执行过程 . servlet路径映射 . 缺省servlet --应用 . servlet生命周 ...
- Matcher的group()/group(int group)/groupCount()用法介绍
直接上代码: package com.dajiangtai.djt_spider.util; import java.util.regex.Matcher;import java.util.regex ...