Codeforces 920F 线段树

语音测试(二)音频标注(praat) 通过点击红线下方的圆点进行区域划分,在区域中标注所属的类别。按住Alt+Backspace 键取消蓝色线条。 阅读详情

题意:

查询:区间查询【l,r】数列的和

修改:区间修改【l,r】ai->d(ai)

d(x)是x的因子个数 比如d(6)=4 (1,2,3,6四个)

思路:

查询:维护区间数列和sum,满足区间合并

修改:尝试暴力修改到叶子+剪枝

发现x多次d(x)是会收敛的d(2)=2,d(1)=1

所以当区间内的值都是<=2的话我们就不用向下继续更新了

那怎么知道区间的值都<=2呢。。

维护区间最大值即可


d(x)预处理一下,对每个因子i更新d(j) j=ki,k>=1


思维难度:0.6,实现难度0.7

跟BZOJ3038类似:那题修改是ai->向下取整sqrt(ai)


#include<iostream>
#include<stdio.h>
#include<math.h>
#include<vector>
using namespace std;
#define ll long long
int d[1000005]; 

struct stree{
	ll sum;
	ll mx;
}sts[300002*4];
ll a[1000005];
void pushup(int root)
{
	sts[root].sum=sts[root<<1].sum+sts[root<<1|1].sum;
	sts[root].mx=max(sts[root<<1].mx,sts[root<<1|1].mx);
}
void init()
{
	for(int i=1;i<=1000000;i++)
		for(int j=i;j<=1000000;j+=i)
			d[j]++;
}
void build(int l,int r,int root)
{
	if(l==r)
	{
		sts[root].sum=sts[root].mx=a[l];
	}
	else
	{
		int mid=(l+r)>>1;
		build(l,mid,root<<1);
		build(mid+1,r,root<<1|1);
		pushup(root);
	}
}

void update(int nowl,int nowr,int ul,int ur,int root)
{
	if(nowl==nowr)
	{
		sts[root].mx=sts[root].sum=d[sts[root].sum];
		return ;
	}
	if(ul<=nowl&&ur>=nowr&&sts[root].mx<=2)return ;
	int mid=(nowl+nowr)>>1;
	if(ul<=mid)update(nowl,mid,ul,ur,root<<1);
	if(ur>mid)update(mid+1,nowr,ul,ur,root<<1|1);
	pushup(root);
}

ll query(int nowl,int nowr,int ql,int qr,int root)
{
	if(ql<=nowl&&qr>=nowr)
	{
		return sts[root].sum;
	}
	else
	{
		int mid=(nowl+nowr)>>1;
		ll ans=0;
		if(ql<=mid)ans+=query(nowl,mid,ql,qr,root<<1);
		if(qr>mid)ans+=query(mid+1,nowr,ql,qr,root<<1|1);
		return ans;
	}
}
void op();
int main()
{
	init();
//	for(int i=1;i<=10;i++)
//		printf("%d %d\n",i,d[i]);
	int n,m;int t,l,r;
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
	scanf("%I64d",&a[i]);
	build(1,n,1);
//	op();
	for(int i=1;i<=m;i++)
	{
		scanf("%d %d %d",&t,&l,&r);
		if(t==1)
		{
			update(1,n,l,r,1);
		//	op();
		}
		else
		{
			printf("%I64d\n",query(1,n,l,r,1));
		}
	}
}

void sp(int t)
{
	for(int i=1;i<=t;i++)
	printf(" ");
}
void op()
{
	int pow2[10]={1,2,4,8,16,32};int n=16;
	printf("\n///////////\n");
	for(int i=1; i<=31; i++)
	{
		if(i==pow2[0])sp(15);
		if(i==pow2[1])sp(7);
		if(i==pow2[2])sp(3);
		if(i==pow2[3])sp(1);
		if(i>pow2[1]&&i<pow2[2])sp(15);
		if(i>pow2[2]&&i<pow2[3])sp(7);
		if(i>pow2[3]&&i<pow2[4])sp(3);
		if(i>pow2[4]&&i<pow2[5])sp(1);
		printf("%d",sts[i].mx);
		if((i==pow2[1]-1)||(i==pow2[2]-1)||(i==pow2[3]-1)||(i==pow2[4]-1))
			printf("\n");
	}
	printf("\n\n///////////\n");
}

Orange3实战教程:实例---文本分类 我们可以使用预测模型按作者、类型、情感等对文档进行分类。在此工作流中,我们根据文档的Aarne Thompshon Uther索引对文档进行归类,这是故事的主题定义。我们使用两个简单的学习器,Logistic回归和朴素贝叶斯,两者都可以在诺谟图中检查。然后再从可视化分类中添加列线图组件,观察哪些词对逻辑回归最重要。也可以尝试使用在朴素贝叶斯模型上,并编辑连线属性。再从模型中添加朴素贝叶斯模型,以尝试不同的学习器。 阅读详情

相关推荐

DySAT+: Enhancing Dynamic Graph Representation Learning with Multi-Head Self-Attention and Temporal-

本文深入探讨了DySAT+模型在动态图表示学习中的创新应用,通过多头时空注意力机制和层级信息融合策略,有效解决了动态图数据中的时间维度信息捕捉和结构演变动态适应问题。该模型在社交网络异常检测和金融交易网络分析等场景中表现出色,显著提升了预测准确率和响应速度。

weixin_29035405的博客 335

Codeforces 920F - SUM and REPLACE 线段树

Codeforces 920F - SUM and REPLACE 题意: 给定一组长度为n的数组,有m次操作(两种不同的操作)。每次操作输入三个数 t  x  y,如果 t==1 ,将从 x 到 y 的每一个数都变为D(i) (D(i)为 i 的因子个数),t==2 输出从 x 到 y 的和。 思路: 线段树。此处需要一点优化。2的因子个数是2,1的因子个数是1,如果需要更新的位置 所存...

没有梦想何以远行 226

CentOS7全隔离环境部署Nvidia Tesla A100 40G驱动与CUDA工具包实战

本文详细介绍了在CentOS7全隔离环境下部署Nvidia Tesla A100 40G显卡驱动与CUDA工具包的实战经验。通过构建本地YUM仓库、解决驱动依赖问题以及三重验证法,确保Tesla A100与CUDA 11.7的完美兼容。同时分享了Anaconda3离线部署技巧,帮助用户在隔离环境中高效搭建Python GPU开发环境。

weixin_27215337的博客 400

CodeForces - 920F SUM and REPLAC(线段树)

题目链接:点击这里 题目大意: 给定一个长度为 nnn 的序列,进行 mmm 个操作,操作有两种: 将 [l,r][l,r][l,r] 的每一个元素变成其因子个数 求 [l,r][l,r][l,r] 的元素和 题目分析: 此题难点是操作 111 我们发现 d(x)≤xd(x)\le xd(x)≤x ,而且很多都是远小于,所以可以大胆猜测修改到相等,即 x=1,2x=1,2x=1,2 所用的次数不会很多 然后提前线筛求出 d(x)d(x)d(x) ,然后用线段树暴力修改即可,同时维护区间最大值,如果最大值

羊驼的博客 221

DSShop移动商城网店系统 反序列化RCE漏洞复现

DSShop单店铺移动商城网店系统的getCartList方法的cart参数存在php反序列化漏洞,攻击者可以通过漏洞执行任意代码,获取服务器权限。

0xSec 1471

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

银行信息系统应用架构详解 883

Tea Queue CodeForces - 920B

Recently n students from city S moved to city P to attend a programming camp. They moved there by train. In the evening, all students in the train decided that they want to drink some tea. Of course, ...

tomjobs的博客 650

基于SiamFC的红外目标跟踪

初始化阶段:在第一帧中,通过用户标注获得目标框,从目标区域中提取一个固定大小的模板(称为 exemplar)。搜索阶段:在后续帧中,在以当前目标中心为中心的较大区域(称为 instance)内进行搜索,将模板与搜索区域通过卷积操作得到响应图。位置更新:在响应图中找到峰值位置,并转换到原图坐标,用以更新目标中心。部分实现中还会考虑多尺度搜索和目标尺寸更新。import cv2# 定义 SiamFC 简易网络(示例)# 特征提取部分,注意红外图像通常为单通道,使用较少的卷积核数提高实时性。

weixin_43745234的博客 774

SUM and REPLACE CodeForces - 920F(线段树)

思路   对所有数的约数个数打个表,当n<=2的时候不需要再往下修改,线段树维护。 #include<iostream> #include<string> #include<algorithm> #include<cstdio> using namespace std; typedef long long ll; const int MAXN=1000000+100; struct node { int l,r; int maxx; ll sum;

qq_43560101的博客 244

手把手教您解决 AdGuard Home DNS重写功能失效的问题

AdGuard Home 设置了 DNS 重写,规则明明没问题,客户端却死活解析不到内网 IP?🤯 别急着重装!🚫 本文手把手教你如何解决软路由 DNS 解析“玄学”故障!🛠️🚀

XiaoqiangClub的博客 917

PCL:实现 PPF估计(附完整源码)

PCL:实现 PPF估计(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 716

CodeForces - 920F 线段树

Let D(x) be the number of positive divisors of a positive integer x. For example, D(2) = 2 (2 is divisible by 1 and 2), D(6) = 4 (6 is divisible by 1, 2, 3 and 6). You are given an array a of n integ...

bjfu170203101的博客 312

提升ARM Cortex-M系统性能的关键技术:TCM技术解析与实战指南

TCM技术为ARM Cortex-M处理器提供了宝贵的确定性性能提升手段,特别适合对时序敏感的实时应用。通过合理配置和优化,工程师可以显著提高系统性能、降低中断响应时间并优化功耗。随着嵌入式系统对实时性要求的不断提高,TCM技术将在工业控制、汽车电子、医疗设备等领域发挥更加重要的作用。未来,ARM处理器可能会进一步扩展TCM容量并优化其与其他内存子系统的协同工作方式,为开发者提供更强大的实时性能保障。

1680

codeforces 920F 线段树

F. SUM and REPLACE time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Let D(x) be the number of positive divis

Lakersilk的博客 676

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

codeforces 并查集_Codeforces920 F.SUM and REPLACE(线段树,或并查集+树状数组)

题意: 解法:存在性质:x变为d(x),最多变6次之后,x<=2.当x<=2时,d(x)=x,之后x就不会再变了.解法1:线段树维护区间max,当区间max<=2的之后,就不修改了.区间和线段树也可以直接维护.解法2:因为当x<=2时,d(x)=x,之后x就不会再变了,那么可以考虑存一个链表,每次暴力修改,当a[i]<=2的时候,将其从链表中删掉.可以用并查集做:令p...

weixin_39763953的博客 100

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

codeforces 920 F. SUM and REPLACE 线段树

920 F 题意 定义D数组为一个数的约数个数 2操作求 l 到 r的区间和 1操作把里面值赋值成他们D数组 我们知道一旦你区间maxx 是 2 或者 1 那么就不用更新了 因为D(1) = 1 D(2) = 2 #include <cstdio> #include <cstring> #include <iostream> #include <...

我是谁 --- 卡比兽 171

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

codeforces920f(线段树)

F. SUM and REPLACE time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Let D(x) be the number of positive divis

yypurpose的博客 500

Codeforces 920F - SUM and REPLACE 【线段树】

<题目链接> 题目大意: 给你一个序列,有两个操作,一个是求区间 l - r 的和,另一个是对区间l-r的元素修改值,x=d(x),d(x)为x的因子个数。 解题分析: 因为可能有多次修改操作,并且修改的范围可能比较大,所以提前将1~1e6范围内的数的因子个数全部打表进行处理。但是仅仅这样还是不行的,因为如果每次区间更新都暴力更新到叶子节点的话,区间更新 $O(nlog(n))...

weixin_30284355的博客 128

codeforces CF920F SUM and REPLACE 线段树 线性筛约数

$ \Rightarrow $ 戳我进CF原题 F. SUM and REPLACE time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input output: standard output   Let $ D(x) $ be the number of posi...

ayf1988的博客 231

F. SUM and REPLACE codeforces920f(线段树)

本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。 求一个数的因子个数:https://blog.youkuaiyun.com/ii0789789789/article/details/79683286 Let D(x) be the number of positive divisors of a positive integer x. For example, D(2) = 2 (2 i...

年轻过成了秃顶 199

[线段树] CodeForces - 920F SUM and REPLACE (数学优化)

[线段树] CodeForces - 920F SUM and REPLACE (数学优化) https://vjudge.net/problem/1349242/origin 题意:给出一个数组,有两个操作,一个操作把区间所有数都变成其因子个数,另一个操作询问区间和。 一个树的约束个数 最多 2∗sqrt(n)2*sqrt(n)2∗sqrt(n) 我每次 变成它的约束个数 最多也就30次到1了...

蒟蒻的最后的倔强 290

Codeforces 920F - SUM and REPLACE【线段树】

Codeforces 920F - SUM and REPLACE【线段树】 Let D(x) be the numberof positive divisors of a positive integer x. For example, D(2) = 2 (2 is divisible by1 and 2), D(6) = 4 (6 is divisible by1, 2, 3 and 6). You are given an array a of n integers. Youhave to proce

Dust_heart的博客 418

Codeforces 920F - SUM and REPLACE(线段树)

题意:给你n个数,进行m次操作,分别是将区间[l,r]内的所有数替换成自己的因子数 和 对区间[l,r]进行求和。 题解: 调试了一下午,原来是运算符号优先级的问题。或运算符和+不要一起用 解析:线段树问题,但是直接做的话会超时,所以要加一个优化,可以发现2的因子个数还是2,1的因子个数还是1,所以如果某个数被更新成1或者2之后就不需要再进行更新了。 这里给张线段树的图 代码: #

城南的花 664

CodeForces - 920F SUM and REPLACE (线段树)

题意:给N个数M次操作,(1<=N,M<=3e5, 1<=ai<=1e6),1是使[L,R]中的每个元素变成其因子的个数之和;2是求[L,R]区间之和 分析:看上去就很线段树的一题,但是却思考了很久。发现1和2即使对其,也不会改变二者的值。而且一个大于2的数进行多次1操作,也最终会退化到2。 先预处理筛出1e6以内各数的质因子个数和。在线段树的节点中维护两个值:区间和以...

weixin_30650859的博客 119

Codeforces920 F.SUM and REPLACE(线段树,或并查集+树状数组)

题意:

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 1251

codeforces 920F. SUM and REPLACE(线段树)

传送门 线段树入门题。 给你一个序列:支持区间修改成自己的约数个数,区间求和。 实际上跟区间开方一个道理。 2的约数个数为2,1的约数个数为1,因此只要区间的最大值小于3就不用修改否则就暴力修改。 因此要做的就是预处理一个数的约数个数,这个可以nlnnnln_nnlnn​预处理。 代码: #include&lt;bits/stdc++.h&gt; #define lc (p&lt;&lt;1) ...

苟为蒟蒻又何妨 261
上一篇: BZOJ1012 线段树插入???
下一篇: POJ3468 线段树 数据较严
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值