Codeforces 731 F. Video Cards(前缀和)

[Codeforces 731 F. Video Cards](http://codeforces.com/problemset/problem/731/F) 题目大意:给一组数,从中选一个数作lead,要求其他所有数减少为其倍数,再求和。问所求和的最大值。 思路:统计每个数字出现的个数,再做前缀和,用于之后快速求和。将原数组排序后去重,枚举每一个数做lead的情况下,其余数减少后再求和的结果。不断维护最大值即可。 PS:这里用到了一个方便的函数unique()来去重,使用前需要先将数组排序,参数为数组的首地址和尾后地址,返回新的尾后地址。(该函数没有将重复的元素删除,只是放到了尾地址后面)可以用len=unique(a,a+n)-a得到去重后数组的长度。 附上代码: ```C++ #include #include #include using namespace std; typedef long long ll; const int maxn=2e5+10; int a[maxn]; int cnt[maxn*2+5]; int main() { int n,i,j; cin>>n; for (i=0;i
posted @ 2018-05-09 20:14  __orange  阅读(196)  评论(0编辑  收藏  举报