CF2111C.Equal Values
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个由 n 个整数构成的数组 a1,a2,…,an。
每次操作,你可以执行以下两种操作之一:
- 选择一个位置 i(1<i≤n),将第 i 个元素左侧的所有元素都赋值为 ai,即将所有 aj(1≤j<i)赋值为 ai。该操作的代价为 (i−1)⋅ai。
- 选择一个位置 i(1≤i<n),将第 i 个元素右侧的所有元素都赋值为 ai,即将所有 aj(i<j≤n)赋值为 ai。该操作的代价为 (n−i)⋅ai。
注意,被操作影响到的元素即使已经等于 ai,操作的代价也不会改变。
你可以进行任意次数的操作(包括零次)。请问将数组所有元素变为相等的最小总代价是多少?
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(2≤n≤5×105)。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n)。
所有测试用例中 n 的总和不超过 5×105。
输出格式
对于每个测试用例,输出一个整数,表示将数组所有元素变为相等的最小总代价。
输入输出样例
输入#1
3 4 2 4 1 3 3 1 1 1 10 7 5 5 5 10 9 9 4 6 10
输出#1
3 0 35
说明/提示
在第一个测试用例中,你可以进行两次操作:
- 选择 i=3,将其左侧所有元素赋值为 a3,代价为 2×1=2;
- 选择 i=3,将其右侧所有元素赋值为 a3,代价为 1×1=1。
总代价为 2+1=3。
在第二个测试用例中,所有元素已经相等,因此不需要进行任何操作。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?