题目

题意简介明了,需要找到一个\(T\),最小化

\[\sum_{i=1}^n\left \lfloor \frac{a_i}{T} \right \rfloor+\sum_{i=1}^na_i\%T
\]

非常显然的\(a_i\%T=a_i-\left \lfloor \frac{a_i}{T} \right \rfloor\times T\)

于是

\[\sum_{i=1}^n\left \lfloor \frac{a_i}{T} \right \rfloor+\sum_{i=1}^na_i-T\times \sum_{i=1}^n\left \lfloor \frac{a_i}{T} \right \rfloor
\]

即为

\[\sum_{i=1}^na_i-(T-1)\sum_{i=1}^n\left \lfloor \frac{a_i}{T} \right \rfloor
\]

最小化这个柿子只需要最大化\((T-1)\sum_{i=1}^n\left \lfloor \frac{a_i}{T} \right \rfloor\)

考虑一次枚举\(T\),需要快速求出\(\sum_{i=1}^n\left \lfloor \frac{a_i}{T} \right \rfloor\)

注意到\(\left \lfloor \frac{a_i}{T} \right \rfloor\)只会有\(\left \lfloor \frac{\max a_i}{T} \right \rfloor\)种值,即对于\(a_i\in[0,T-1],\left \lfloor \frac{a_i}{T} \right \rfloor=0...a_i\in [kT-T,kT-1],\left \lfloor \frac{a_i}{T} \right \rfloor=k\)

我们直接暴力这\(\left \lfloor \frac{\max a_i}{T} \right \rfloor\)段区间,前缀和算一下这段区间里有多少个\(a_i\)即可

复杂度显然调和级数,视\(n\)与\(\max a_i\)同级,复杂度为\(O(n\log n)\)

代码

#include<bits/stdc++.h>
#define re register
#define LL long long
#define max(a,b) ((a)>(b)?(a):(b))
const int maxn=1e6+5;
inline int read() {
char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
int n,pre[maxn],T;LL ans,tmp;
inline int calc(int l,int r) {
return (r>T?pre[T]:pre[r])-(l?pre[l-1]:0);
}
int main() {
n=read();
for(re int x,i=1;i<=n;i++) x=read(),ans+=x,T=max(T,x),pre[x]++;
for(re int i=1;i<=T;i++) pre[i]+=pre[i-1];
for(re int i=2;i<=T;++i) {
LL now=0;
for(re int cnt=0,l=0,j=i-1;l<=T;j+=i,l+=i,++cnt)
now+=1ll*calc(l,j)*cnt;
if(1ll*now*(i-1)>tmp) tmp=1ll*now*(i-1);
}
printf("%lld\n",ans-tmp);
return 0;
}

uoj21 【UR #1】缩进优化的更多相关文章

  1. 【uoj#21】[UR #1]缩进优化 数学

    题目描述 给出 $n$ 个数 ,求 $\text{Min}_{x=1}^{\infty}\sum\limits_{i=1}^n(\lfloor\frac {a_i}x\rfloor+a_i\ \tex ...

  2. UOJ_21_【UR #1】缩进优化_数学

    UOJ_21_[UR #1]缩进优化_数学 题面:http://uoj.ac/problem/21 最小化$\sum\limits{i=1}^{n}a[i]/x+a[i]\;mod\;x$ =$\su ...

  3. 【UOJ#21】【UR#1】缩进优化

    我好弱啊,什么题都做不出来QAQ 原题: 小O是一个热爱短代码的选手.在缩代码方面,他是一位身经百战的老手.世界各地的OJ上,很多题的最短解答排行榜都有他的身影.这令他感到十分愉悦. 最近,他突然发现 ...

  4. UOJ#21 【UR #1】缩进优化

    传送门 http://uoj.ac/problem/21 枚举 (调和级数?) $\sum_{i=1}^{n} (a_i / x + a_i \bmod x) =\sum a_i - (\sum_{i ...

  5. uoj21 缩进优化(整除分块,乱搞)

    题目大意: 给定一个长度为\(n\)的序列 让你找一个\(x\),使得\(ans\)尽可能小 其中$$ans=\sum_{i=1}^{n}\lfloor\frac{a_i}{x}\rfloor + \ ...

  6. uoj problem 21 缩进优化

    题目: 小O是一个热爱短代码的选手.在缩代码方面,他是一位身经百战的老手.世界各地的OJ上,很多题的最短解答排行榜都有他的身影.这令他感到十分愉悦. 最近,他突然发现,很多时候自己的程序明明看起来比别 ...

  7. ●UOJ 21 缩进优化

    题链: http://uoj.ac/problem/21 题解: ...技巧题吧 先看看题目让求什么: 令$F(x)=\sum_{i=1}^{n}(\lfloor a[i]/x \rfloor +a[ ...

  8. UOJ 做题记录

    UOJ 做题记录 其实我这么弱> >根本不会做题呢> > #21. [UR #1]缩进优化 其实想想还是一道非常丝播的题目呢> > 直接对于每个缩进长度统计一遍就好 ...

  9. UOJ Round #1 [数论 | DP 排列]

    UOJ Round #1 难度很良心啊! 做出了前两题,第三题看到仙人掌就吓哭了. [UR #1]缩进优化 就是求 \[ \sum_{i=1}^n a_i - (x-1)\sum_{i=1}^n\lf ...

随机推荐

  1. ajax - getJSON() 方法

    $("body").on("click",".layui-input-inline:eq(3)",function(){ $(this).f ...

  2. HDU 1700 Points on Cycle (坐标旋转)

    题目链接:HDU 1700 Problem Description There is a cycle with its center on the origin. Now give you a poi ...

  3. window_mysql踩坑

    https://blog.csdn.net/qq_37350706/article/details/81707862 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置系统环境 ...

  4. ping命令的应用

    Ping命令是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要功能是向特定的目的主机发送 ICMP(Iternet Control Message Protocol 因特网报文控制协议) ...

  5. swiper在微信端滑动效果不友好(滑动不了)的解决方案

    如需转载请注明出处.好用就点赞吧 前提:我做的事竖直方向的一份报告,上下翻页滑动. 猜测原因: 1.检查自己的slide里面内容的样式的的高度,就是两个页面的高度不一致,测试的时候wrapper会取连 ...

  6. 第十一篇 session和cookie自动登录机制

    session和cookie的作用和区别可以在网上查到,这里简单说下,我们使用的http协议本身是种无状态的协议,就是说web服务器接收到浏览器的请求,会直接返回相应内容,并不会检查是哪个浏览器,即浏 ...

  7. Java的GC是什么?做了什么?

    Java GC是Java的垃圾回收机制 Java堆是被所有线程共享的一块内存区域,所有对象实例和数组都在堆上进行内存分配.为了高效的进行垃圾回收,虚拟机把堆内存分为新生代,老年代和永久代3个区域 新生 ...

  8. nginx 简单使用

    一,下载 http://nginx.org/en/download.html 这个是我下载的windows版本 二,解压后目录 三,修改配置文件 (由于80端口很可能被 SQL Server Repo ...

  9. webpack初始化

    1. 安装node js 2. 安装npm 3. 在桌面新建一个文件夹 4.利用cmd 进入文件夹 5.在cmd中创建一个新文件夹并且进入 6.npm init -y  生成page.json 7. ...

  10. Centos6.5升级安装openssh7.7p1

    Centos6.5升级安装openssh7.7p1  关于OpenSSH漏洞   2016年1月14日OpenSSH发布官方公告称, OpenSSH Client 5.4~7.1 版本中未公开说明的功 ...