网站设计公司地址,公司网站维护与更新,什么网站需要经营性备案,wordpress主题git下载样例输入#
2
4
1 2 3 4
4
3 2 4 1样例输出#
3
5
解题思路#xff1a;最小操作次数一定是把所有数变成数组中最大值max。
1、找最大值#xff0c;一开始我把max初始值设为0#xff0c;如果a[i]max,maxa[i],WA了。又看了一遍题目#xff0c;发现所有整数的绝对值小于…
样例输入#
2
4
1 2 3 4
4
3 2 4 1样例输出#
3
5
解题思路最小操作次数一定是把所有数变成数组中最大值max。
1、找最大值一开始我把max初始值设为0如果a[i]max,maxa[i],WA了。又看了一遍题目发现所有整数的绝对值小于10的9次方。那如果数组都是负数最大值是0岂不是出问题了。
解决方法把max初始值设为a[0]
最大值初始化不要忘记要考虑为负数的情况。
2、把原数组的数变为与max相差值的数。比如 1 2 3 4。最大值为4新的数组为3 2 1 0
3、a[n]0,如果a[i]a[i1],ansa[i]-a[i1]。找规律即可注意数组最后一位设为0in。
#includestdio.h
int a[10005]{};
int main(){int T;scanf(%d,T);while(T--){int n,i;scanf(%d,n);for(i0;in;i){scanf(%d,a[i]);}//找出数列最大值 int maxa[0];for(i0;in;i){if(a[i]max)maxa[i];}for(i0;in;i) {a[i]max-a[i];}a[n]0; long long cnt0;for(i0;in;i){if(a[i]a[i1])cnta[i]-a[i1];}printf(%lld\n,cnt);}
}