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读取wav格式文件
    电子工程术语和定义列表,按字母顺序排列
    MAC地址加减1算法
    uboot通过kernel command line 动态分区 CONFIG_MTD_CMDLINE_PARTS
    c调用shell脚本
    busybox提示can't access tty.job control turned off
    cut命令如何截取以空格隔开的字段
    DS28E01100
    busybox 中的ntpd使用
    Debugfs
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/7474782.html
Copyright © 2011-2022 走看看