题解 SP2713 【GSS4 - Can you answer these queries IV】
用计算器算一算,就可以发现\(10^{18}\)的数,被开方\(6\)次后就变为了\(1\)。
所以我们可以直接暴力的进行区间修改,若这个数已经到达\(1\),则以后就不再修改(因为\(1\)开方后还是\(1\)),用并查集和树状数组进行维护。
这个方法用了P2391 白雪皑皑的思想处理,用并查集标记该点已经不再用替换。
和我这题CF920F【SUM和REPLACE】的方法相同。
\(code\):
#include<bits/stdc++.h>
#define maxn 500010
#define lowbit(x) (x&(-x))
typedef long long ll;
using namespace std;
ll n,m;
ll fa[maxn],k,l,r;
ll a[maxn],tree[maxn];
int cnt;
int find(int x)
{
	return fa[x]==x?x:fa[x]=find(fa[x]);
}
void add(int x,ll d)
{
	while(x<=n)
	{
		tree[x]+=d;
		x+=lowbit(x);
	}
}
ll query(int x)
{
	ll sum=0;
	while(x)
	{
		sum+=tree[x];
		x-=lowbit(x);
	}
	return sum;
}
int main()
{
	while(scanf("%lld",&n)!=EOF)
	{
		cnt++;
		printf("Case #%d:\n",cnt);
		for(int i=1;i<=n*4;++i)
		tree[i]=0;
		for(int i=1;i<=n;++i)
		{
			scanf("%lld",&a[i]);
			add(i,a[i]);
			fa[i]=i;
		}
		fa[n+1]=n+1;
		scanf("%lld",&m);
		while(m--)
		{
			scanf("%lld%lld%lld",&k,&l,&r);
			if(l>r)
			swap(l,r);
			if(k==0)
			{
				for(int i=l;i<=r;)
				{
					add(i,(ll)sqrt(a[i])-a[i]);//手动暴力开方
					a[i]=(ll)sqrt(a[i]);
					if(a[i]<=1)
					fa[i]=i+1;//若这个数已经为1,则将其指向它下一个数
					if(i==find(i))
					i++;
					else
					i=fa[i];//进行跳转,忽略不再需要开方的数
				}
			}
			else
			printf("%lld\n",query(r)-query(l-1));
		}
		printf("\n");
	}
	return 0;
}
题解 SP2713 【GSS4 - Can you answer these queries IV】的更多相关文章
- 线段树 SP2713 GSS4 - Can you answer these queries IV暨 【洛谷P4145】 上帝造题的七分钟2 / 花神游历各国
		SP2713 GSS4 - Can you answer these queries IV 「题意」: n 个数,每个数在\(10^{18}\) 范围内. 现在有「两种」操作 0 x y把区间\([x ... 
- SP2713 GSS4 - Can you answer these queries IV(线段树)
		传送门 解题思路 大概就是一个数很少次数的开方会开到\(1\),而\(1\)开方还是\(1\),所以维护一个和,维护一个开方标记,维护一个区间是否全部为\(1/0\)的标记.然后每次修改时先看是否有全 ... 
- 【SP2713 GSS4 - Can you answer these queries IV】 题解
		题目链接:https://www.luogu.org/problemnew/show/SP2713 真暴力啊. 开方你开就是了,开上6次就都没了. #include <cmath> #in ... 
- SP2713 GSS4 - Can you answer these queries IV
		题目大意 \(n\) 个数,和在\(10^{18}\)范围内. 也就是\(\sum~a_i~\leq~10^{18}\) 现在有两种操作 0 x y 把区间[x,y]内的每个数开方,下取整 1 x y ... 
- SP2713 GSS4 - Can you answer these queries IV  分块
		问题描述 LG-SP2713 题解 分块,区间开根. 如果一块的最大值是 \(1\) ,那么这个块就不用开根了. 如果最大值不是 \(1\) ,直接暴力开就好了. \(\mathrm{Code}\) ... 
- 洛谷P4145 上帝造题的七分钟2 / 花神游历各国(重题:洛谷SP2713 GSS4 - Can you answer these queries IV)
		题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段 ... 
- GSS4 - Can you answer these queries IV(线段树懒操作)
		GSS4 - Can you answer these queries IV(线段树懒操作) 标签: 线段树 题目链接 Description recursion有一个正整数序列a[n].现在recu ... 
- GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 (线段树)
		GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 GSS4 - Can you answer these qu ... 
- 题解【SP2713】GSS4 - Can you answer these queries IV
		题目描述 You are given a sequence \(A\) of \(N(N \leq 100,000)\) positive integers. There sum will be le ... 
随机推荐
- 7、struct2的命名空间
			采用命名空间可以区分不同action下面相同的函数名称 我们来看下面的一个程序的代码 我们来看下面的代码: 添加物料的action处理类: package com.weiyuan.test; publ ... 
- Redis五种数据类型应用场景
			目录 1.1 回顾 2.1 应用场景 2.1.1 String 2.1.2 Hash 2.1.3 List 2.1.4 Zet 2.1.5 zset 3.1 小结 1.1 回顾 Redis的五种数据类 ... 
- centos 7 增加永久静态路由
			1 在 /etc/sysconfig/network-scripts/ 目录下添加route-eth3,eth3为实际网卡名称. [root@compute1 ~]# cat /etc/sysconf ... 
- Linux hostname主机名配置文件/etc/hosts详解
			这篇文章为大家介绍linux hostname主机名配置文件/etc/hosts,包括主机名的用途.配置文件的操作方法等,有需要的朋友,可以参考下 1.什么是Linux主机名 无论在局域网还是INTE ... 
- 二.4vue展示用户数据及用户组操作以及给用户组添加额外字段
			一.用户列表 1.新建(1)views/users/index.vue: <template> <div class="user-list-container"& ... 
- Linux查看docker容器日志
			docker logs -f 容器名或ID | grep fail | more grep fail:过滤包含fail的日志内容 
- pycharm中连接MySql出现  Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.的错误解决
			具体异常如下: 这个异常特别烦人,是mysql连接驱动的问题,可以用二步解决: 第一步 从网上下载驱动,从mysql-connector-java_8.0.16-1ubuntu16.04_all.de ... 
- 「MoreThanJava」Day 1:环境搭建和程序基本结构元素
			「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ... 
- 解决autocomplete=off在Chrome中不起作用的方法
			大家都知道autocomplete属性是表单字段中的HTML5新属性,该属性有两种状态值,分别为"on" 和 "off",该属性可省略:省略属性值后默认值为&q ... 
- 【API进阶之路6】一个技术盲点,差点让整个项目翻车
			上次教了实习生一个方案之后,这小子跟运营妹子的关系是越走越近,时不时地撒把狗粮,在我司真正实现了研发运营一家亲~(上回你没看?戳上文剧情回顾:万万没想到,一个技术方案帮实习生追到了运营妹子) 这回想跟 ... 
