2019年第二阶段我要变强个人训练赛第八场 B.序列(seq)
B.序列(seq)
•题目描述
给出一个长度为n的序列a,每次对序列进行一下的某一个操作。
•输入
第一行两个整数n,q表示序列长度和操作个数。
接下来一行n个数,表示序列a。
接下来q行表示操作,其格式见题目描述。
•输出
见题目描述。
•题解
单点修改区间查询,但是坑点在于单点修改超时,如果一个值小于等于1开根不受影响,所以可以不去耗时间修改它;具体实现方法就是叶子节点定义一个变量f代表是否需要修改如果小于等于1就不需要然后向上传递p=p<<1&p<<1|1就行了;•AC代码
#include <bits/stdc++.h>
using namespace std;
struct node
{
int l,r,f;
long long v;
}t[];
long long a[];
void build(int p,int l,int r)
{
t[p].l=l;
t[p].r=r;
t[p].f=;
if(l==r)
{
t[p].v=a[l];
return;
}
int mid=(l+r)>>;
build(p<<,l,mid);
build(p<<|,mid+,r);
t[p].v=t[p<<].v+t[p<<|].v;
t[p].f=t[p<<].f&t[p<<|].f;
}
void change(int p,int x,int y)
{
if(t[p].l==t[p].r)
{
t[p].v=sqrt(t[p].v);
if(t[p].v<=)
t[p].f=;
return;
}
int mid=(t[p].l+t[p].r)>>;
if(x<=mid&&!t[p<<].f)
change(p<<,x,y);
if(y>mid&&!t[p<<|].f)
change(p<<|,x,y);
t[p].v=t[p<<].v+t[p<<|].v;
t[p].f=t[p<<].f&t[p<<|].f;
}
long long sum(int p,int x,int y)
{
if(x<=t[p].l&&y>=t[p].r)
return t[p].v;
int mid=(t[p].l+t[p].r)>>;
long long ans=;
if(x<=mid)
ans+=sum(p<<,x,y);
if(y>mid)
ans+=sum(p<<|,x,y);
return ans;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%lld",&a[i]);
build(,,n);
while(m--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==)
printf("%lld\n",sum(,b,c));
else
change(,b,c);
}
}
•题解来源(by mhr)
2019年第二阶段我要变强个人训练赛第八场 B.序列(seq)的更多相关文章
- UPC 2019年第二阶段我要变强个人训练赛第六场
传送门 A.上学路线 题目描述 小D从家到学校的道路结构是这样的:由n条东西走向和m条南北走向的道路构成了一个n*m的网格,每条道路都是单向通行的(只能从北向南,从西向东走). 已知小D的家在网格的左 ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十四场
A.JOIOJI •传送门 [1]:BZOJ [2]:洛谷 •思路 在一个区间(L,R]内,JOI的个数是相等的,也就是R[J]-L[J]=R[O]-L[O]=R[I]-L[I], 利用前缀和的思想, ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十六场
E: 飞碟解除器 •题目描述 wjyyy在玩跑跑卡丁车的时候,获得了一个飞碟解除器,这样他就可以免受飞碟的减速干扰了.飞碟解除器每秒末都会攻击一次飞碟,但每次只有p/q的概率成功攻击飞碟.当飞碟被成功 ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十五场
传送门 A: Colorful Subsequence •题意 给一个长为n的小写字母序列,从中选出字母组成子序列 问最多能组成多少种每个字母都不相同的子序列 (不同位置的相同字母也算是不同的一种) ...
- UPC 2019年第二阶段我要变强个人训练赛第十六场
传送门: [1]:UPC比赛场 [2]:UPC补题场 F.gu集合(数论) •题目描述 题目描述: Dew有一个长为n的集合S. 有一天,他想选k个不同的元素出来做游戏. 但是Dew只有两只手,所以他 ...
- 问题 L: An Invisible Hand - (2018年第二阶段个人训练赛第三场)
题目描述 There are N towns located in a line, conveniently numbered 1 through N. Takahashi the merchant ...
- 2019牛客训练赛第七场 C Governing sand 权值线段树+贪心
Governing sand 题意 森林里有m种树木,每种树木有一定高度,并且砍掉他要消耗一定的代价,问消耗最少多少代价可以使得森林中最高的树木大于所有树的一半 分析 复杂度分析:n 1e5种树木,并 ...
- 【AdaBoost算法】强分类器训练过程
一.强分类器训练过程 算法原理如下(参考自VIOLA P, JONES M. Robust real time object detection[A] . 8th IEEE International ...
- 2019牛客多校第八场 F题 Flowers 计算几何+线段树
2019牛客多校第八场 F题 Flowers 先枚举出三角形内部的点D. 下面所说的旋转没有指明逆时针还是顺时针则是指逆时针旋转. 固定内部点的答案的获取 anti(A)anti(A)anti(A)或 ...
随机推荐
- css 不大常见的属性(不断更新中...)
1 英语或数字强制换行 word-break:break-all; 2 使用具有回弹效果的滚动, 当手指从触摸屏上移开,内容会继续保持一段时间的滚动效果 -webkit-overflow-scroll ...
- 如何用KNIME进行情感分析
Customer Intelligence Social Media Finance Credit Scoring Manufacturing Pharma / Health Care Retail ...
- linux 下配置多个tomcat同时运行
一个服务器上内存通常有2G或者更多,一个tomcat 运行管理这么多内存有点力不从心,并且貌似一个进程所能建立的线程数量是有限的,于是我们想要在一个服务器上运行多个tomcat.如下是摘抄自:http ...
- PHPCMS快速建站系列之邮箱验证
1. 登录163邮箱,->设置,开启POP3服务->把SMTP服务器地址复制到PHPCMS后台. 2.开启客户端授权密码 3.填写相关信息,.可以在测试邮箱填入邮箱地址测试
- 2018年DDoS攻击全态势:战胜第一波攻击成“抗D” 关键
2018年,阿里云安全团队监测到云上DDoS攻击发生近百万次,日均攻击2000余次.目前阿里云承载着中国40%网站,为全球上百万客户提供基础安全防御.可以说,阿里云上的攻防态势是整个中国攻防态势的缩影 ...
- 开发一个登录接口(Mysql)
分享一段代码,开发了一个登录接口: 使用Python开发,需要安装flask模块,使用pip intall flask 安装即可,这里使用的数据库是Mysql,所以导入了pymysql模块,代码如下: ...
- GCD使用经验与技巧浅谈
前言 GCD(Grand Central Dispatch)可以说是Mac.iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧. dispatch_once_t必须是全局或stati ...
- Maven中央存储库 和 如何从Maven远程存储库下载?
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载.首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默 ...
- SQL左连接查询 left join ... on
左连接查询 保留左边主表的所有行(即使在右表没有匹配的行),右表输出满足 on 条件的行,不满足的输出null 示例:组合两个表 - 力扣 表1: Person +--------------+- ...
- Java练习 SDUT-1184_拍皮球
C语言实验--拍皮球 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小瑜3岁了,很喜欢玩皮球,看来今后喜欢打篮球的^_ ...

