1414 冰雕 51nod 暴力

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
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<sstream>
#include<algorithm>
#include<queue>
#include<deque>
#include<iomanip>
#include<vector>
#include<cmath>
#include<map>
#include<stack>
#include<set>
#include<fstream>
#include<memory>
#include<list>
#include<string>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
#define MAXN 20009
#define N 21
#define MOD 1000000
#define INF 1000000009
const double eps = 1e-8;
const double PI = acos(-1.0);
/*
注意到MAXN比较小,可以用暴力试一试
*/
int a[MAXN], ans, n;
int main()
{
    while (scanf("%d", &n) != EOF)
    {
        for (int i = 0; i < n; i++)
            scanf("%d", &a[i]);
        ans = -INF;
        for (int i = 1; i <= n / 3; i++)//最少是正三角形,枚举顶点之间的间距,在1到n/3
        {
            if (n%i) continue;//无法通过去点组成该正多边形
            for (int j = 0; j < i; j++)//枚举起点
            {
                int tmp = 0;
                for (int k = j; k < n; k += i)//计算吸引力之和
                    tmp += a[k];
                ans = max(ans, tmp);
            }
        }
        printf("%d\n", ans);
    }
}
时间: 2024-10-07 07:12:01

1414 冰雕 51nod 暴力的相关文章

51NOD 1414 冰雕(暴力)

传送门 白兰大学正在准备庆祝成立256周年.特别任命副校长来准备校园的装扮. 校园的中心竖立着n个冰雕.这些雕像被排在一个等分圆上,因此他们形成了一个正n多边形.这些冰雕被顺针地从1到n编号.每一个雕有一个吸引力t[i]. 校长来看了之后表示不满意,他想再去掉几个雕像,但是剩下的雕像必须满足以下条件: · 剩下的雕像必须形成一个正多边形(点数必须在3到n之间,inclusive), · 剩下的雕像的吸引力之和要最大化. 请写一个程序帮助校长来计算出最大的吸引力之和.如果不能满足上述要求,所有雕像

51Nod-1414-冰雕

51Nod-1414-冰雕 1414 冰雕 白兰大学正在准备庆祝成立256周年.特别任命副校长来准备校园的装扮. 校园的中心竖立着n个冰雕.这些雕像被排在一个等分圆上,因此他们形成了一个正n多边形.这些冰雕被顺针地从1到n编号.每一个雕有一个吸引力t[i]. 校长来看了之后表示不满意,他想再去掉几个雕像,但是剩下的雕像必须满足以下条件: ·        剩下的雕像必须形成一个正多边形(点数必须在3到n之间,inclusive), ·        剩下的雕像的吸引力之和要最大化. 请写一个程序

51nod 1094 和为k的连续区间(暴力和map优化)

题目意思: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1094 一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间[i, j],(1 <= i <= j <= n),使得a[i] + ... + a[j] = k. Input 第1行:2个数N,K.N为数列的长度.K为需要求的和.(2 <= N <= 10000,-10^9 <= K <= 10^9

51nod 1732 婚姻介绍所 (暴力 / DP)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1732 题目: 51nod除了在做OJ之外,还开展了很多副业.婚姻介绍所就是其中之一. 对于一个客户,我们可以使用一个字符串来描述该客户的特质. 假设现在我们有两个客户A和B. A的特质字符串为:abcdefg B的特质字符串为:abcxyz 则A和B的匹配度f(A, B)为A和B的最长公共前缀的长度,即len('abc') = 3 由于最近51nod经费紧张,

[51nod] 1267 4个数和为0 暴力+二分

给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No". Input 第1行,1个数N,N为数组的长度(4 <= N <= 1000) 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9) Output 如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No". Input示例 5 -1 1 -5 2 4 Output

51nod 1116 K进制下的大数 (暴力枚举)

题目链接 题意:中文题. 题解:暴力枚举. #include <iostream> #include <cstring> using namespace std; const int MAXS = 1e5 + 10; const int MAXK = 36; char num[MAXS]; int main(int argc, const char * argv[]) { while (cin >> num) { int sum = 0; int len = (int)

51nod——1285 山峰和分段(暴力出奇迹)

要求每段的点数都一样,因此分的段数cnt肯定是n的因子,要求每段都有山峰,因此cnt肯定小于等于山峰数量.分段的宽度d=n/cnt,对山峰数量做一个前缀和,检查一下每一段的山峰数量是否没有增加即可. 1 ///暴力枚举段数 2 #include <bits/stdc++.h> 3 using namespace std; 4 #define maxn 50050 5 int high[maxn],num[maxn]; 6 7 int main(){ 8 std::ios::sync_with_

CodeForces 558 C. Amr and Chemistry &amp;&amp; 51NOD 1483 化学变换(暴力 + 贪心)

传送门 Amr loves Chemistry, and specially doing experiments. He is preparing for a new interesting experiment. Amr has n different types of chemicals. Each chemical i has an initial volume of ai liters. For this experiment, Amr has to mix all the chemic

51nod 1217 Minimum Modular(数论+暴力)

N个不同的数a[1],a[2]...a[n],你可以从中去掉K个数,并且找到一个正整数M,使得剩下的N - K个数,Mod M的结果各不相同,求M的最小值. Input 第1行:2个数N, K,中间用空格分隔,N表示元素的数量,K为可以移除的数的数量(1 <= N <= 5000, 0 <= K <= 4, 1 <= a[i] <= 1000000). Output 输出符合条件的最小的M. Input示例 5 1 1 2 10 11 12 Output示例 4----