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