首页 > 其他分享 >CF264B Good Sequences 题解

CF264B Good Sequences 题解

时间:2023-10-12 19:22:06浏览次数:35  
标签:pre Good int 题解 Sequences res CF264B mx

Good Sequences

状态很显然,设 \(f[i]\) 表示位置 \(i\) 的最长长度。

关键是转移,暴力转移是 \(O(n^2)\) 的,我们必须找到一个更优秀的转移。

因为一个数的质因子数量是 \(O(\log n)\) 的,而只有和这个数具有相同质因子的数是可以转移的;

因此我们可以对于每个质数 \(p\),设一个 \(mx_p\) 表示所有有 \(p\) 作为质因子的 \(x\) 的 \(f_i\) 的最大值。

关于质因子应该怎么得出嘛,线性筛一下即可。

复杂度 \(O(n\log n)\)。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+100;
int n,res,t,x;
int p[N],pre[N],mx[N],f[N];
void prime(){
    for(int i=2;i<=N;i++){
        if(!p[i]){p[++p[0]]=i;pre[i]=p[0];}
        for(int j=1;j<=p[0]&&i*p[j]<=N;j++){
            p[i*p[j]]=true;
			pre[i*p[j]]=j;
            if(!(i%p[j])) break;
        }
    }
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
    cin>>n;
	prime();
    for(int i=1;i<=n;i++){
        cin>>x;
		f[i]=1;
        t=x;
        while(t!=1){
			f[i]=max(f[i],mx[pre[t]]+1);
			t/=p[pre[t]];
		}
        t=x;
        while(t!=1){
			mx[pre[t]]=f[i];
			t/=p[pre[t]];
		}
        res=max(res,f[i]);
    }
    printf("%d\n",res);
    return 0;
}

标签:pre,Good,int,题解,Sequences,res,CF264B,mx
From: https://www.cnblogs.com/xuantianhao/p/17760341.html

相关文章

  • 题解 AtCoder wtf22_day1_b【Non-Overlapping Swaps】
    题解AtCoderwtf22_day1_b【Non-OverlappingSwaps】problem给定一个排列,要求交换最多\(n-1\)对元素,使得这个排列变成[1,2,...,n]的有序排列。当然没有那么简单,对于交换还是有限制的,对于相邻的两次交换,不妨叫做\((l_i,r_i)\)和\((l_{i+1},r_{i+1})\),必须满足这两个交......
  • 题解 CF486D Valid Sets
    题目链接相当牛逼。这种找数量的题型,确定树形\(dp\)没跑了。首先思考常规树形\(dp\),不难想到设\(f_{u,a,b}\)表示以\(u\)为根节点的子树内(包括点\(u\)),最大值是\(a\),最小值是\(b\)的连通子图数量,转移很容易,但是这样时间空间复杂度是\(\rmO(n^3)\),而且无论是状态上......
  • Debian12安装elasticsearch实践及问题解决方案
    一、安装安装其实很简单,直接上官网链接:下载地址,官网提供了所有安装方式,总一款适合你。我的目标系统是Debian12,包管理是apt-get,所以就以这个为示例,仅供参考。1、先选择需要安装的版本2、导入ElasticsearchPGP密钥wget-qO-https://artifacts.elastic.co/GPG-KEY-elastic......
  • 原创题题解
    实时更新。众所周知的,原创题就是即原神又创人的题。当然有的题不会放,等考了在放。波特问题描述流水线上有\(n\)个波特,每个波特有一个工作效能\(a_i\)。对于每一个波特,当它遇到一个工件时,它会对其进行加工,耗费\(1\)个单位时间,然后把它传递给它前面中工作效能最大的波特,......
  • #9134. 翻转硬币 题解
    首先考虑一些简单的情况,比如\(m=1\)。容易发现操作1和操作2的顺序不会影响结果,于是可以钦定所有操作1在操作2之前。并且可以发现,进行完所有1后2的次数即为\((\text{连续段个数}-1)\)。然后考虑将\(m>1\)的情况。显然最后序列上每\(m\)长度分一段,则每一段都相......
  • [CF1098E] Fedya the Potter 题解
    [CF1098E]FedyathePotter题解前言一道类欧好题。题解这道题让求\(c\)数组的中位数,那么有一个比较套路的方法就是二分答案\(mid\)然后计算\(b\)数组中区间和小于\(mid\)的区间个数进行\(check\)。但是\(b\)数组总共有\(\mathcal{O}(n^2)\)项,考虑如何优化。因......
  • [ABC245G] Foreign Friends 题解
    [ABC245G]ForeignFriends题解想法考虑所有颜色相同的弱化版。这种情况下,只需要把所有特殊点都推入队列之后跑多源Dijkstra即可。思路正解与上述做法大致相同。如果有颜色限制,那么可以考虑这个神仙思路:把所有特殊点的颜色用二进制表示,对于每一位,这一位是\(0\)的特殊......
  • CF882E1+CF1882E2 Two Permutations 题解-构造题
    CF882E1+CF1882E2TwoPermutations题解-构造题哇,人类智慧,太智慧了。。。此题作为20231010联考的T3。感觉赛时根本没有去往这方面想。CF1882E1CF1882E2E1是简单版,就是没有要求操作数最小化。E1-EasyVersion方法1首先考虑没有次数限制的,对于单独的每一个串的情况。......
  • [USACO17JAN] Promotion Counting P 题解
    [USACO17JAN]PromotionCountingP题解前言好久没写题解了,今天趁我心情好赶紧水一篇。思路首先拿到这题,关键词检索:子树,比\(p_i\)大的,树状数组!现在考虑如何去掉其他子树的贡献……emm,我直接在算贡献的时候去掉其他子树的贡献不就好了!当然,暴力去贡献复杂度肯定爆炸,这里考虑......
  • [USACO08FEB]meteor Shower S题解(bfs)
    题目描述贝茜听说一场特别的流星雨即将到来:这些流星会撞向地球,并摧毁它们所撞击的任何东西。她为自己的安全感到焦虑,发誓要找到一个安全的地方(一个永远不会被流星摧毁的地方)。如果将牧场放入一个直角坐标系中,贝茜现在的位置是原点,并且,贝茜不能踏上一块被流星砸过的土地。根据预......