首页 > 其他分享 >CF1422F Boring Queries

CF1422F Boring Queries

时间:2023-08-13 13:44:05浏览次数:43  
标签:对于 Boring CF1422F 贡献 因子 Queries

CF1422F Boring Queries

题意

询问区间 \(lcm\),强制在线。

题解

首先考虑每个质因子对于答案的贡献。
对于一个质因子 \(p_i\) 来说其对于区间 \([l,r]\) 的贡献是其最高次幂。
首先考虑离线做法,扫描线,线段树维护答案。
将当前加入的数 \(a_i\) 分解成 \(p_i^{k_i}\),我们有一个暴力的操作,对于前面所有 \(a_j\) 有 \(p_i\) 的一个一个修改,使得 \([l,i]\) 中所有的 \(p_i\) 的幂贡献都是最大值。

但是这样每次插入做会被叉成 \(O(nlogn)\),显然没办法通过。

考虑在上述修改过程中的操作,我们从后往前做,记录后缀最大幂。
对于当前修改的点的幂来说,若当前幂数大于后缀最大幂,则消去前面的贡献,然后加入自己的贡献,否则,不加入自己的贡献。
仔细想一想,这其实是一个贡献相消的过程,想一想,实际上就相当于 \(1\) 到最高次幂只做一次贡献,这就有一点像区间数颜色了,我们将一个质数的不同幂看做不同的颜色,这样就可以套用做法了,对于一个幂出现之后对于这个幂上一次出现的位置消去贡献就好了。

对于强制在线,可持久化即可,时间复杂度 \(O(nlogn)\),空间复杂度 \(O(nlog^2n)\),code

另外此题还有对于质因子做根号分治的做法,但比较平凡。

标签:对于,Boring,CF1422F,贡献,因子,Queries
From: https://www.cnblogs.com/snow-panther/p/17626486.html

相关文章

  • 【BZOJ 3364】Distance Queries 距离咨询 题解
    原题简化题意:有一棵\(n\)个点的树,\(q\)组询问,每次询问回答两点间的距离。令\(dis[i][j]\)表示\(i\)到\(j\)的距离,根节点为\(rt\),则有\(dis[i][j]=dis[rt][i]+dis[rt][j]-2×dis[rt][lca(i,j)]\),按照题意打即可。#include<bits/stdc++.h>usingnamespacestd;#d......
  • CF938G Shortest Path Queries 题解
    目录题目链接题目分析为什么使用生成树建树对于异或贡献的分析code题目链接CF938G洛谷挂了只能交CF题目分析本题有以下几个关键点:为什么使用生成树建树首先根据\(WC2011\)我们发现可以使用\(dfs\)序来保存节点之间的关系但是我们发现本题目中存在加边删边操作不......
  • QSqlDatabasePrivate::removeDatabase: connection ‘myConnection’ is still in use
    1.解决QSqlDatabasePrivate::removeDatabase:connection‘myConnection’isstillinuse,allquerieswillceasetowork的问题该问题主要是因为没有关闭之前的数据库连接,然后又需要创建新的数据库连接导致。解决方案:必须释放该连接的所有查询,即删除所有与该连接有关的quer......
  • 【线段树】 HDOJ 4027 Can you answer these queries?
    想了好久的线段树,用到的思想好巧妙,因为最大是2的63次方,所以开了个6,7次的平方就全变成一了。。。。比较好写的一种方法是直接用不加lazy的线段树更新区间,然后加一个当sum=R-L+1就不更新的剪枝。。。。我的代码是每加一次开根就pushdown,达到7次以后就不更新了。。。#include<iost......
  • DistanceQueriesonaTree
    [ABC294G]DistanceQueriesonaTree首先树剖+线段树肯定可以直接用树剖模板过掉,但是带两个\(\log\)。我们考虑更优秀的做法。拟定\(1\)为根,首先维护前缀\(dis[i]\)为从\(1\simi\)的路径上的所有边权之和(这里记边权为在下面的点的点权)。显然,没有修改时答案是\(dis_a......
  • D Odd Queries 题解
    原题传送门题意简述给定一个数组,再给出m个各自独立(即这个操作不影响后续的询问)的询问,每次给定一个区间,询问将这个区间每个元素都修改为k后,数组总和会是奇数吗?解决思路由于n的范围很大,所以暴力肯定是不可以了,由于每个询问是独立的,我们不需要修改序列,所以不需要使用数据结构。......
  • Codeforces Round #371 (Div. 1)-A. Sonya and Queries(Trie树)
    原题链接A.SonyaandQueriestimelimitpertestmemorylimitpertestinputoutputTodaySonyalearnedaboutlongintegersandinvitedallherfriendstosharethefun.Son......
  • 【每日一题】Problem 313B - Ilya and Queries
    原题解决思路使用后缀和计算到i处共有多少对\(s_i=s_{i+1}\),计算时相减以下就可以#include<bits/stdc++.h>intmain(){std::strings;intm;std::cin>>s>>m;std::vector<std::vector<int>>vec(m,std::vector<int>(2,0));......
  • Ad Hoc Distributed Queries 的启用与关闭2
    上一篇的解决办法,主要是通过语句操作来完成,SQLServer也提供了图形操作界面来解决类似问题我们可以利用SQLServer(2005)配置工具中提供的“SQLServer外围应用配置”来完成此操作,具体的操作方法如下:1.打开“SQLServer外围应用配置”,界面如下图 2.选择“SQLServer外围应用配置......
  • Codeforces Gym 103119B - Boring Problem(高斯消元)
    考虑建出AC自动机,朴素做法是高斯消元,\(f_i=\sum\limits_{j=0}^{k-1}f_{to_{i,j}}p_j+1\),复杂度\(O(n^3m^3)\),不能接受。考虑优化高斯消元的过程,我们定义以下节点为“关键点”:根节点对于一个trie树(也就是未经过AC自动机getfail操作得到的树)上有超过两个儿子的节点\(x......