Perfect Groups CodeForces - 980D】的更多相关文章

链接 题目大意: 定义一个问题: 求集合$S$的最小划分数,使得每个划分内任意两个元素积均为完全平方数. 给定$n$元素序列$a$, 对$a$的所有子区间, 求出上述问题的结果, 最后要求输出所有结果的出现次数 可以先考虑每个划分中的数需要满足什么条件. 假设均为正数, 则只需要所有数除去平方因子后相等即可, 负数的话, 跟正数一样, 正负分开处理即可, 再特判掉$0$. 再考虑如何求解, 因为$n$范围比较小可以支持$n^2$算法的, 直接考虑暴力求出每个子区间的结果, 最后再统计答案. 这样…
原文链接https://www.cnblogs.com/zhouzhendong/p/9074164.html 题目传送门 - Codeforces 980D 题意 $\rm Codeforces$ 真是个令人伤心的地方. 伤心的 $zzd$ 现在给你一个含有 $n$ 个数字元素的数列. $zzd$ 问你对于 $1$ 到 $n$ 之间的每一个 $k$ 满足 $Q(序列)=k$ 的原序列的连续子序列个数. 其中,$Q()$定义如下: 把当前数列中的数分组,使得同组中任意两个数的乘积为完全平方数.其…
\(>Codeforces\space980 D. Perfect Groups<\) 题目大意 : 设 \(F(S)\) 表示在集合\(S\)中把元素划分成若干组,使得每组内元素两两相乘的结果的都是完全平方数的最小组数 对于长度为\(n\)的序列 \(A\) ,对于每一个 \(k \, (1 \leq k \leq n)\) ,分别求出在\(A\)的所有子串中有多少 \([l, r]\) 满足 \(F(A[l, r]) = k\) $n \leq 5000, \space |A_{i}| \…
CF 980D Perfect Groups(数论) 一个数组a的子序列划分仅当这样是合法的:每个划分中的任意两个数乘积是完全平方数.定义a的权值为a的最小子序列划分个数.现在给出一个数组b,问权值为i的b的子串个数. 这题意真不是人类智慧能轻易描述的.据说此题在比赛场上读题30min,做题5min,做完还WA.果然是坑题. 如果有两个数a和b,a和b的乘积是完全平方数,那么如果a有因子x^2,那么x^2就可以去掉,使a变成a/x^2,结论依然成立.因此我们把所有数的质因子次数mod2,可以发现…
题意: 有这样一个问题,给出一个数组,把里面的数字分组,使得每一个组里面的数两两相乘都是完全平方数. 问最少可以分成的组数k是多少. 现在一个人有一个数组,他想知道这个数组的连续子数组中,使得上面的问题答案分别为1到n的数组有多少个. 第一个样例 2 5 5 子数组有[5],[5],[5 5]三个,这三个组最少可以分别分为1 1 1组,使得每个组的任意两个数相乘都是平方数. 思路: 感谢js帮本智障debug. 首先对于一个不为0的数,如果把它的所有完全平方数的因子去掉,那么是不会影响结果的.…
传送门:>Here< 题目大意:先抛出了一个问题——“已知一个序列,将此序列中的元素划分成几组(不需要连续)使得每一组中的任意两个数的乘积都是完全平方数.特殊的,一个数可以为一组.先要求最少分几组.”在这个问题的基础上,给出一个长度为n的序列,该序列有\(\frac{n(n+1)}{2}\)个子序列,求每个子序列对于上面这个问题最少划分几次.并分别统计最少划分k次的子序列有几个. 解题思路 题目由于是英文的,好长时间没读懂,而且还读错.注意he needs to find the number…
题意 定义一个串的权值是将其划分成 \(k\) 组,使得每一组在满足"从组里选出一个数,再从组里选出一个数,它们的乘积没有平方因子"这样的前提时的最小的 \(k\).每组的数不必相邻, 不必连续. 现在给你一串数,问你,权值为 \(1,2,\ldots,n\) 的子串分别有多少个. 解答 显然如果一个数中含有平方因子,抹去平方因子也不会对答案产生影响. 因此对于一个串,抹去平方因子后,有多少种不同的数,权值就是多少.注意要特判 \(0\). #include <iostream&…
这题其实挺水的,但我比较vegetable,交了好多次才过. 题意: 给定一个序列,把这个序列的所有连续子序列分组,每组中任意两个数相乘是个完全平方数,输出每个子序列最少分的组数: 思路: 先把每个数都除去自身的完全平方因子,为什么呢?这样处理了之后,只有相同的数相乘才能变成完全平方数,而且原来相乘能变成完全平方数的数对也不会有影响,举个例子:$ 1 \times 4 = 4 $,$4$是完全平方数,除去平方因子后,变成 $1 \times 1 = 1$,$1$还是完全平方数(感性地理解YY一下…
题意:给一个序列,对于每一个连续的区间,区间内的数至少分成几个组,使得每个组内的数任意2个相乘是一个完全平方数(包括0). 输出每个组数的个数. $n \leq 5000 , |a_i| \leq 10^8$ 我们发现,对于一个数$x$,我们把$x$所有成对的相同质因子除去之后得到的数是$f(x)$ 那么分到同一个组的所有数的$f(x_i)$相同,0可以被分到任何集合 明显我们可以$n^2$做这道题,枚举一个子序列的右端点,然后从右到左枚举左端点,顺便维护最小组数. 对于加入一个数$x$,我们需…
[codeforces 317]A. Perfect Pair 试题描述 Let us call a pair of integer numbers m-perfect, if at least one number in the pair is greater than or equal to m. Thus, the pairs (3, 3) and (0, 2) are 2-perfect while the pair (-1, 1) is not. Two integers x, y a…