51NOD 1414 冰雕【水】
2017-01-26 21:53
295 查看
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 ,表示每一个冰雕的吸引力(-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 System Message (题目提供者)
不难发现
如果n能被i整除
那n边行 每隔i-1个点,取一个点,能组成n/i边型
那暴力的复杂度 = ∑ (n%i==0)i(n/i)
令k = 能被n整除的数的个数
复杂度 = kn 随便一算 发现最大值才1e7级别 放心暴力即可
const int N = 2e4; ll slove(int n){ ll ans=0; for(int i=2;i<=n;++i){ if(n%i==0){ ans+=n; } } return ans; } int main() { ll maxK=0; for(int i=1;i<=N;++i){ maxK=max(maxK,slove(i)); } cout<<maxK<<endl; return 0; }
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<string> #include<vector> #include<deque> #include<queue> #include<algorithm> #include<set> #include<map> #include<stack> #include<time.h> #include<math.h> #include<list> #include<cstring> #include<fstream> #include<queue> #include<sstream> //#include<memory.h> using namespace std; #define ll long long #define ull unsigned long long #define pii pair<int,int> #define INF 1000000007 #define pll pair<ll,ll> #define pid pair<int,double> const int N = 2e4 + 5; int a ; int n; int f(int st,int step){//从第st个数起,每隔step取一个数 组成一个正多边形 int ans=0; for(int i=st;i<n;i+=step){ ans+=a[i]; } return ans; } int slove(){ int ans=-INF; for(int i=1;i<n;++i){ if(n/i<3){ break; } if(n%i==0){ for(int st=0;st<i;++st){ ans=max(f(st,i),ans); } } } return ans; } int main() { //freopen("/home/lu/Documents/r.txt","r",stdin); //freopen("/home/lu/Documents/w.txt","w",stdout); while(~scanf("%d",&n)){ for(int i=0;i<n;++i){ scanf("%d",a+i); } printf("%d\n",slove()); } return 0; }
相关文章推荐
- 51NOD 1414 冰雕(暴力)
- 51nod 1414 冰雕
- 51Nod 1414 冰雕
- 1414 冰雕 51nod 暴力
- 51nod 1414 冰雕
- 51Nod 1414 冰雕 (暴力模拟)
- 51NOD-1414 冰雕
- 51nod 1414 冰雕【思维+暴力】
- 51nod 1414 冰雕 (水题)
- 51nod 1414 冰雕 思路:暴力模拟题
- 51nod 1402最大值 1414冰雕 暴力
- 51nod 1414 冰雕(思维+暴力)
- 51nod 1414 冰雕
- 51Nod - 1414 冰雕问题
- 51Nod-1414-冰雕
- 51Nod - 1414 暴力
- 51Nod-冰雕(暴力)
- 51Nod 1086背包问题V2
- 求N!的长度【数学】 51nod 1058 1130
- 51Nod 1049 最大子段和(分治/dp)