1 条题解
-
0
自动搬运
来自洛谷,原作者为

KDL_ANIPLEX
我乃是——龙!||对不起,csp_s结束再关回来搬运于
2025-08-24 22:51:50,当前版本为作者最后更新于2023-10-28 14:17:43,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目分析
题意简述
给定一个自然数组成的数组 。
求出一个整数 ,使得 与 的积最大。
对于 的数据,。题目分析
- 由于 ,考虑 的算法。
- 基本思路:
- 读入,读入的同时进行前缀和(记录 )。
- 重头扫一遍,根据“和不变,差小积大”的原理,记录两个因数差的绝对值最小时的 。
- 输出 。
- 复杂度:
- 读入、前缀和:。
- 重头扫一遍:。
- 输出:。
整体复杂度为 。
- 注意事项:
- 开
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
- 9350
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者