1 条题解
-
0
题目分析
题意简述
给定一个自然数组成的数组 。
求出一个整数 ,使得 与 的积最大。
对于 的数据,。题目分析
- 由于 ,考虑 的算法。
- 基本思路:
- 读入,读入的同时进行前缀和(记录 )。
- 重头扫一遍,根据“和不变,差小积大”的原理,记录两个因数差的绝对值最小时的 。
- 输出 。
- 复杂度:
- 读入、前缀和:。
- 重头扫一遍:。
- 输出:。
整体复杂度为 。
- 注意事项:
- 开
longlong。
代码
#include<cstdio> long long a[200001],s=1e17,n,l; long long abss(long long x,long long y)//绝对值函数 { if (x>y) return x-y; return y-x; } int main(){ scanf ("%d",&n); for (int i=1;i<=n;i++){ int u; scanf ("%d",&u);//读入。 a[i]=a[i-1]+u;//前缀和。 } for (int i=1;i<=n;i++){ long long o=abss(a[i],a[n]-a[i]);//两个因数差的绝对值。 if (o<s) s=o,l=i;//记录目前最小的差与答案。 else break;//小优化:如果已经比 s 大,那后面的也会比 s 大,所以退出。 } printf ("%d\n",l); return 0; }
- 1
信息
- ID
- 10272
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者