首页 > 小睿睿的数列
头像 EternalEpic
发表于 2020-08-22 01:03:31
扫描法,以当前数为gcd进行扩展,找到合法的l和r。 可是这样会TLE,我们考虑如果向左延伸到相同的数,那么代表这个数能扩展的区间已经被标记过,就无需再做了。 code: const int Maxn = 2e6 + 5; int n, a[Maxn], ans = 0, anscnt = 0; s 展开全文
头像 __故人__
发表于 2020-09-15 09:40:07
分析 对于整个数列,因为每一个数只能被一个区间覆盖,所以考虑求出每个数的延伸范围。复杂度 。 代码 #include<bits/stdc++.h> using namespace std; const int N = 2e6 + 100; int read() {int x;scanf 展开全文
头像 Dear㉿You
发表于 2020-09-09 08:27:47
前言 初,遇题甚恐,不知何以解之。一暴以试,得AC,作此篇 分析 别学数据结构学傻了 我们对于每一个点,可以向左扩展最长能满足条件的区间,然后再向右扩展。但是如果不作些许操作,万一这个序列是10000个1,这样跑就是n^2,直接飞起(但是数据不太强,也可以过)。于是可以记录一个lm[i],r 展开全文
头像 Acapplella
发表于 2020-09-13 11:43:13
#include<bits/stdc++.h> typedef long long ll; using namespace std; #define INF 0x3f3f3f3f const int maxn =2e6+5; #define mod 1000000007 using na 展开全文
头像 bai_qi
发表于 2020-09-16 13:40:07
题目描述小睿睿给了你一个长度为n的数列,他想问你该数列中满足条件(区间内存在某个数是区间内所有数的公因数)的最长区间有多少个思路:假设当前这个数为公因数,然后向前向后搜,搜过的点不可能存在更长的符合条件的区间了就不用搜了,所以复杂度不高。代码: #include <iostream> # 展开全文

等你来战

查看全部