zoukankan      html  css  js  c++  java
  • 1414 冰雕

    1414 冰雕

    题目来源: CodeForces

    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题

    白兰大学正在准备庆祝成立256周年。特别任命副校长来准备校园的装扮。

    校园的中心竖立着n个冰雕。这些雕像被排在一个等分圆上,因此他们形成了一个正n多边形。这些冰雕被顺针地从1到n编号。每一个雕有一个吸引力t[i].

    校长来看了之后表示不满意,他想再去掉几个雕像,但是剩下的雕像必须满足以下条件:

    ·        剩下的雕像必须形成一个正多边形(点数必须在3到n之间,inclusive),

    ·        剩下的雕像的吸引力之和要最大化。

    请写一个程序帮助校长来计算出最大的吸引力之和。如果不能满足上述要求,所有雕像不能被移除。

    Input

    单组测试数据。 第一行输入一个整数n(3≤n≤20000),表示初始的冰雕数目。 第二行有n个整数t[1],t[2],t[3],…,t[n],表示每一个冰雕的吸引力(-1000≤t[i]≤1000),两个整数之间用空格分开。

    Output

    输出答案占一行。

    Input示例

    8

    1 2 -3 4 -5 5 2 3

    6

    1 -2 3 -4 5 -6

    Output示例

    14

    9

     

     

    //必然是 n 的因子,才能剩下的数为正多边形,然后枚举一下多边形的所有情况,暴力枚举找最大

     1 # include <cstdio>
     2 # include <cstring>
     3 # include <cstdlib>
     4 # include <iostream>
     5 # include <vector>
     6 # include <queue>
     7 # include <stack>
     8 # include <map>
     9 # include <bitset>
    10 # include <sstream>
    11 # include <set>
    12 # include <cmath>
    13 # include <algorithm>
    14 # pragma  comment(linker,"/STACK:102400000,102400000")
    15 using namespace std;
    16 # define LL          long long
    17 # define pr          pair
    18 # define mkp         make_pair
    19 # define lowbit(x)   ((x)&(-x))
    20 # define PI          acos(-1.0)
    21 # define INF         0x3f3f3f3f3f3f3f3f
    22 # define eps         1e-8
    23 # define MOD         1000000007
    24 # define MX          20005
    25 /**************************/
    26 int dat[MX];
    27 
    28 int main()
    29 {
    30     int n, ans= 0;
    31     scanf("%d",&n);
    32     for (int i=1;i<=n;i++)
    33     {
    34         scanf("%d",&dat[i]);
    35         ans+=dat[i];
    36     }
    37     for (int i=2;i<=n;i++)
    38     {
    39         if (n%i==0)
    40         {
    41             int pt = n/i; // 点数
    42             if (pt<3) break;
    43             int star=1;
    44             while (star<=i)
    45             {
    46                 int tp=0;
    47                 for (int j=star;j<=n;j+=i)
    48                     tp+=dat[j];
    49                 ans = max(ans,tp);
    50                 star++;
    51             }
    52         }
    53     }
    54     printf("%d
    ",ans);
    55     return 0;
    56 }
    View Code

     

  • 相关阅读:
    Python-发送邮件
    Python基础-类的继承
    Python基础-列表推导式
    三、Linux下mysql的完整安装
    二、linux下apache2.2.11+php5.6.3的环境配置
    linux下编译安装php各种报错大集合
    一、linux下nginx1.7.8+php5.6.3的环境配置
    linux ./configure 的参数详解
    div随窗口变化设置高度
    在地图上增加标注点并为每个点增加各自的信息窗口
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/7474782.html
Copyright © 2011-2022 走看看