CF158D Ice Sculptures 【睡前水一发。。】

来源:互联网 发布:免费附近约会软件 编辑:程序博客网 时间:2024/05/31 00:39

题目链接:http://www.codeforces.com/problemset/problem/158/D


TAG:搜索 数学

有N【<=20000】个数等距围成一圈,可以删除其中的一些数,使剩下的数围成一个正m【3<=m<=N】边形。求剩下的数的最大值。


VKCUP的一道题。。所以看上去是D其实还是很水。。

枚举N的约数,只有删除某个约数的所有倍数才能使剩下的组成一个正m边形。

然后暴力即可。。【果然很简单么。。】

代码:

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;int yueshu[20000]={0};void calcyue(int x){    int count=0;    for(int i=1;i<=x/3;i++)       if(!(x%i))          yueshu[++count]=i;    yueshu[0]=count;}int num[20001]={0};main(){      int n;      int sum[20000]={0};      cin>>n;      calcyue(n);      for(int i=0;i<n;i++)         cin>>num[i];      int maxi=-211111111;      for(int i=1;i<=yueshu[0];i++)      {          memset(sum,0,sizeof(sum));          for(int j=0;j<n;j++)              sum[j%yueshu[i]]+=num[j];          for(int j=0;j<yueshu[i];j++)             maxi=max(maxi,sum[j]);      }      cout<<maxi<<endl;      return 0;}


原创粉丝点击