ACM-ICPC 2018 徐州赛区网络预赛 Ryuji doesn't want to study
简单数学变换+线段树
简单数据结构签到题不解释
本来应该贴板子的,鉴于最近写代码太少了,而且由于要用两个线段树,平时板子都是一个的。以及板子在队友那。就当熟悉写代码,自己写了一下。
#include <bits/stdc++.h>
using namespace std;
#define dual(i, n) (n) + 1 - (i)
typedef long long ll;
int n, q;
const int maxn = 1e+5 + 5;
typedef ll arr[maxn];
arr a, pa;
struct seg_tree
{
// a,nds坐标都是从1开始记
ll *a;
int n;
struct nd
{
ll sum;
};
vector<nd> nds;
seg_tree(ll *a0, int n0)
{
a = a0;
n = n0;
nds.resize(4 * n);
build(1, 1, n);
}
void build(int i, int l, int r)
{
if (l == r)
{
nds[i].sum = a[l];
return;
}
int m = l + (r - l) / 2;
build(2 * i, l, m);
build(2 * i + 1, m + 1, r);
nds[i].sum = nds[2 * i].sum + nds[2 * i + 1].sum;
}
void change(int i, ll x)
{
ll delta = x - a[i];
a[i] = x;
add(i, delta);
}
void add(int i, ll x)
{
int l = 1;
int r = n;
int u = 1;
int m;
while (true)
{
nds[u].sum += x;
if (l == r)
break;
m = l + (r - l) / 2;
if (i <= m)
{
r = m;
u = 2 * u;
}
else
{
l = m + 1;
u = 2 * u + 1;
}
}
}
ll query(int l, int r, int u, int ul, int ur)
{
// ensure ul<=l<=r<=ur
if (ul == l && r == ur)
return nds[u].sum;
int um = ul + (ur - ul) / 2;
if (r <= um) // left
return query(l, r, 2 * u, ul, um);
else if (l >= um + 1) // right
return query(l, r, 2 * u + 1, um + 1, ur);
else
return query(l, um, 2 * u, ul, um) // left
+ query(um + 1, r, 2 * u + 1, um + 1, ur); // right
}
inline ll query(int l,int r) {
return query(l,r,1,1,n);
}
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> q;
for (int i = n; i >= 1; --i)
{
cin >> a[i];
pa[i] = a[i] * i;
}
seg_tree s(a, n);
seg_tree ps(pa, n);
int t, l, r, k;
ll x, px;
for (int i = 0; i < q; ++i)
{
cin >> t;
if (1 == t)
{
// query
cin >> r >> l;
l = dual(l, n);
r = dual(r, n);
cout << ps.query(l, r) - (ll)(l - 1) * s.query(l, r) << "\n";
}
else
{
// a[k] = x
cin >> k >> x;
k = dual(k, n);
px = x * k;
s.change(k, x);
ps.change(k, px);
}
}
cout.flush();
return 0;
}
ACM-ICPC 2018 徐州赛区网络预赛 Ryuji doesn't want to study的更多相关文章
- ACM-ICPC 2018 徐州赛区网络预赛 HRyuji doesn't want to study 树状数组
题目链接:https://nanti.jisuanke.com/t/A2007 题目大意:有一个序列含有n个数a[1],a[2],a[3],……a[n],有两种操作: 第一种操作:k=1,l,r,询问 ...
- 计蒜客 1460.Ryuji doesn't want to study-树状数组 or 线段树 (ACM-ICPC 2018 徐州赛区网络预赛 H)
H.Ryuji doesn't want to study 27.34% 1000ms 262144K Ryuji is not a good student, and he doesn't wa ...
- ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study
262144K Ryuji is not a good student, and he doesn't want to study. But there are n books he should ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心)
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心) Trace 问答问题反馈 只看题面 35.78% 1000ms 262144K There's a beach in t ...
- ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer (最大生成树+LCA求节点距离)
ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer J. Maze Designer After the long vacation, the maze designer ...
- ACM-ICPC 2018 徐州赛区网络预赛(8/11)
ACM-ICPC 2018 徐州赛区网络预赛 A.Hard to prepare 枚举第一个选的,接下来的那个不能取前一个的取反 \(DP[i][0]\)表示选和第一个相同的 \(DP[i][1]\) ...
- ACM-ICPC 2018 徐州赛区网络预赛 B(dp || 博弈(未完成)
传送门 题面: In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl n ...
- ACM-ICPC 2018 徐州赛区网络预赛 B. BE, GE or NE
In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl named &qu ...
- ACM-ICPC 2018 徐州赛区网络预赛 F. Features Track
262144K Morgana is learning computer vision, and he likes cats, too. One day he wants to find the ...
随机推荐
- clr via c# 程序集加载和反射(2)
查看,clr via c# 程序集加载和反射(1) 8,发现类型的成员: 字段,构造器,方法,属性,事件,嵌套类型都可以作为类型成员.其包含在抽象类MemberInfo中,封装了所有类型都有的一组属性 ...
- element-ui 组件 el-calendar 农历显示问题
一.官方文档:https://element.eleme.cn/#/zh-CN/component/calendar 发现官方并无农历显示的介绍 二.1. 自己写阳历转阴历的方法或引入别人写好的 JS ...
- ELK学习001:Elastic Stack简介
ELK简介: ELK Stack:ELK是Elasticsearch.Logstash.Kibana的缩写简称,这三者都是开源软件.ELK是5.0版本前的统称:这是一套统一的日志收集分析系统.它能够方 ...
- Python中verbaim标签使用详解
verbatim标签:默认在"DTL"模板中是会去解析那些特殊字符串的,比如{% 和 %}以及{{等.如果你在某个代码片段中不想使用"DTL"的解析引擎,那么就 ...
- ts中的接口
// 接口:接口是一种定义行为和规范,在程序设计中接口起到限制和规范的作用.接口定义某一 // 一批类所需要遵循的规范,接口不关系这些类的内部实现,之规定这些类必须提供某些方法 /* 1.对批量方法进 ...
- 树莓派搭载CentOS7系统初始配置
系统属性: 树莓派型号:3b SD:32GB 系统:CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1908-sda.raw 开机配置: 连接树莓派: 配件 ...
- day19 几个模块的学习
# 模块本质上就是一个 .py 文件# 数据类型# 列表.元组# 字典# 集合.frozenset# 字符串# 堆栈:特点:先进后出# 队列:先进先出 FIFO # from collections ...
- GHM论文笔记(CVPR2019)
目录 作者要解决的问题 Focal loss(CVPR2017) Focal loss的解决方案 Focal loss的不足 设计思路 梯度与样本的关系 梯度分布计算方法:将0-1的梯度切bin,计算 ...
- Android(安卓)全套开发资料视频+源码
最近看到这么一张图,我觉得对于IT界的人来说应该很有感触. 也许这意味着今年是996的元年吧,但是那又怎么样?即便它虐我们千百遍,我们还是得微笑着面对它.So,今天分享一些整理的Android开发相关 ...
- KVM命令--优化篇(2)
1- 为什么要调优 ___ KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件,故有一定的损耗,特别是I/O,因此需要优化. ___ KVM性能优化主要在CPU.内存.I/O这几方面.当然对于这几 ...