CF1718C.Tonya and Burenka-179
提高+/省选-
通过率:0%
时间限制:3.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Tonya was given an array of a of length n written on a postcard for his birthday. For some reason, the postcard turned out to be a cyclic array, so the index of the element located strictly to the right of the n-th is 1. Tonya wanted to study it better, so he bought a robot "Burenka-179".
A program for Burenka is a pair of numbers (s,k), where 1≤s≤n, 1≤k≤n−1. Note that k cannot be equal to n. Initially, Tonya puts the robot in the position of the array s. After that, Burenka makes exactly n steps through the array. If at the beginning of a step Burenka stands in the position i, then the following happens:
- The number ai is added to the usefulness of the program.
- "Burenka" moves k positions to the right (i:=i+k is executed, if i becomes greater than n, then i:=i−n).
Help Tonya find the maximum possible usefulness of a program for "Burenka" if the initial usefulness of any program is 0.
Also, Tony's friend Ilyusha asks him to change the array q times. Each time he wants to assign ap:=x for a given index p and a value x. You need to find the maximum possible usefulness of the program after each of these changes.
托尼娅生日时收到了一张明信片,上面写着一个长度为 n 的数组 a。不知为何,这张明信片上的数组是循环数组,即第 n 个元素右侧紧邻的元素下标为 1。为了更深入地研究它,托尼娅购买了一台名为“布伦卡-179”的机器人。
“布伦卡”的一个程序是一个二元组 (s,k),其中 1≤s≤n,1≤k≤n−1。注意:k 不能等于 n。初始时,托尼娅将机器人置于数组的第 s 个位置。随后,“布伦卡”在数组上恰好执行 n 步。若某步开始时机器人位于位置 i,则发生如下事件:
- 将数值 ai 加入该程序的效用值(usefulness);
- “布伦卡”向右移动 k 个位置(执行 i:=i+k;若 i 超过 n,则令 i:=i−n)。
请帮助托尼娅求出“布伦卡”程序所能达到的最大可能效用值(初始效用值为 0)。
此外,托尼娅的朋友伊利沙请求他修改数组 q 次。每次操作给定下标 p 和值 x,要求将 ap 修改为 x。你需要在每次修改后,求出此时程序所能达到的最大可能效用值。
输入格式
The first line contains a single integer t (1≤t≤104) is the number of test cases. The description of the test cases follows.
The first line of each test case contains two integers n and q (2≤n≤2⋅105, 0≤q≤2⋅105).
The second line of each test case contains n integers a1,a2,…,an (1≤ai≤109) — elements of the array.
The following q lines contain changes, each of them contains two integers p and x (1≤p≤n, 1≤x≤109), meaning you should assign ap:=x.
It is guaranteed that the sum of n and the sum of q over all test cases do not exceed 2⋅105.
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 q(2≤n≤2⋅105,0≤q≤2⋅105)。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109),表示数组的元素。
接下来的 q 行描述修改操作,每行包含两个整数 p 和 x(1≤p≤n,1≤x≤109),表示将 ap 赋值为 x。
保证所有测试用例中 n 的总和与 q 的总和均不超过 2⋅105。
输出格式
For each test case, output q+1 numbers — the maximum usefulness of a program initially and after each of the changes.
对于每个测试用例,输出 q+1 个数字——分别为程序初始时以及每次修改后的最大有用性。
输入输出样例
输入#1
4 2 1 1 2 1 3 4 4 4 1 3 2 2 6 4 6 1 1 3 11 9 3 1 7 9 4 5 2 3 6 8 3 1 2 1 9 1 6 3 1 1 1 1 1 1 1 5 4 4 3 8
输出#1
3 5 14 16 24 24 24 57 54 36 36 6 18 27 28
说明/提示
In the first test case, initially and after each request, the answer is achieved at s=1, k=1 or s=2, k=1.
In the second test case, initially, the answer is achieved when s=1, k=2 or s=3, k=2. After the first request, the answer is achieved at s=2, k=2 or s=4, k=2.
在第一个测试用例中,初始状态及每次请求后,答案均在 s=1、k=1 或 s=2、k=1 时取得。
在第二个测试用例中,初始状态下,答案在 s=1、k=2 或 s=3、k=2 时取得;第一次请求后,答案在 s=2、k=2 或 s=4、k=2 时取得。
输入解题思路,AI测评打分。不知道怎么写?