CF1497E2.Square-free division (hard version)

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

This is the hard version of the problem. The only difference is that in this version 0k200 \leq k \leq 20 .

There is an array a1,a2,,ana_1, a_2, \ldots, a_n of nn positive integers. You should divide it into a minimal number of continuous segments, such that in each segment there are no two numbers (on different positions), whose product is a perfect square.

Moreover, it is allowed to do at most kk such operations before the division: choose a number in the array and change its value to any positive integer.

What is the minimum number of continuous segments you should use if you will make changes optimally?

输入格式

The first line contains a single integer tt (1t1000)(1 \le t \le 1000) — the number of test cases.

The first line of each test case contains two integers nn , kk ( 1n21051 \le n \le 2 \cdot 10^5 , 0k200 \leq k \leq 20 ).

The second line of each test case contains nn integers a1,a2,,ana_1, a_2, \ldots, a_n ( 1ai1071 \le a_i \le 10^7 ).

It's guaranteed that the sum of nn over all test cases does not exceed 21052 \cdot 10^5 .

输出格式

For each test case print a single integer — the answer to the problem.

输入输出样例

  • 输入#1

    3
    5 2
    18 6 2 4 1
    11 4
    6 2 2 8 9 1 3 6 3 9 7
    1 0
    1

    输出#1

    1
    2
    1

说明/提示

In the first test case it is possible to change the array this way: [3,6,2,4,5][\underline{3}, 6, 2, 4, \underline{5}] (changed elements are underlined). After that the array does not need to be divided, so the answer is 11 .

In the second test case it is possible to change the array this way: [6,2,3,8,9,5,3,6,10,11,7][6, 2, \underline{3}, 8, 9, \underline{5}, 3, 6, \underline{10}, \underline{11}, 7] . After that such division is optimal:

  • [6,2,3][6, 2, 3]
  • [8,9,5,3,6,10,11,7][8, 9, 5, 3, 6, 10, 11, 7]
首页