●UOJ 21 缩进优化
题链:
题解:
。。。技巧题吧
先看看题目让求什么:
令$F(x)=\sum_{i=1}^{n}(\lfloor a[i]/x \rfloor +a[i]$%$x)$
要求输出最小的F(x)。
首先不难看出,x的取值不会超过最大的a[i]+1,(因为之后的答案都和x==a[i]+1时的答案相同)
把式子化为如下形式:
$F(x)=\sum_{i=1}^{n}(\lfloor a[i]/x \rfloor +(a[i]-\lfloor a[i]/x \rfloor x))$
$\quad\quad=\sum_{i=1}^{n}(a[i]-\lfloor a[i]/x \rfloor (1-x))$
$\quad\quad=sum-\sum_{i=1}^{n}(\lfloor a[i]/x \rfloor (1-x))$
$\quad\quad=sum+\sum_{i=1}^{n}(\lfloor a[i]/x \rfloor (x-1))$
现在即是要找出最大的$\sum_{i=1}^{n}(\lfloor a[i]/x \rfloor (x-1))$
然后我们令$t=\lfloor a[i]/x \rfloor$
(把a从小到大排序后)对于每一个枚举的x,
不难发现,随着a[i]的增大,t也是在单增,而且t的取值还是一段一段的。
即对于$a[i]∈ [\lambda x,(\lambda+1)x-1] $,t的取值都是$\lambda$
所以我们可以用后缀和或者前缀和的方法对于每一个枚举的x,快速求出$\sum_{i=1}^{n}(\lfloor a[i]/x \rfloor (x-1))=\sum_{i=1}^{n}t (x-1)$
使得总复杂度为 O(NlogN)
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 1000050
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
int cnt[MAXN];
int main(){
int n,maxa=0; long long ans=0,tmp,sum=0;
scanf("%d",&n);
for(int i=1,x;i<=n;i++)
scanf("%d",&x),cnt[x]++,maxa=max(maxa,x),sum+=x;
for(int i=maxa-1;i;i--) cnt[i]+=cnt[i+1];
for(int x=1;tmp=0,x<=maxa;x++){
for(int r=1;r*x<=maxa;r++)
tmp+=cnt[r*x];
tmp*=(x-1);
if(tmp>ans) ans=tmp;
}
printf("%lld",sum-ans);
return 0;
}
●UOJ 21 缩进优化的更多相关文章
- uoj problem 21 缩进优化
题目: 小O是一个热爱短代码的选手.在缩代码方面,他是一位身经百战的老手.世界各地的OJ上,很多题的最短解答排行榜都有他的身影.这令他感到十分愉悦. 最近,他突然发现,很多时候自己的程序明明看起来比别 ...
- 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 ...
- 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 ...
- 【UOJ#21】【UR#1】缩进优化
我好弱啊,什么题都做不出来QAQ 原题: 小O是一个热爱短代码的选手.在缩代码方面,他是一位身经百战的老手.世界各地的OJ上,很多题的最短解答排行榜都有他的身影.这令他感到十分愉悦. 最近,他突然发现 ...
- 【uoj#21】[UR #1]缩进优化 数学
题目描述 给出 $n$ 个数 ,求 $\text{Min}_{x=1}^{\infty}\sum\limits_{i=1}^n(\lfloor\frac {a_i}x\rfloor+a_i\ \tex ...
- Web 性能优化:21 种优化 CSS 和加快网站速度的方法
这是 Web 性能优化的第 4 篇,上一篇在下面看点击查看: Web 性能优化:使用 Webpack 分离数据的正确方法 Web 性能优化:图片优化让网站大小减少 62% Web 性能优化:缓存 Re ...
- uoj21 【UR #1】缩进优化
题目 题意简介明了,需要找到一个\(T\),最小化 \[\sum_{i=1}^n\left \lfloor \frac{a_i}{T} \right \rfloor+\sum_{i=1}^na_i\% ...
- uoj21 缩进优化(整除分块,乱搞)
题目大意: 给定一个长度为\(n\)的序列 让你找一个\(x\),使得\(ans\)尽可能小 其中$$ans=\sum_{i=1}^{n}\lfloor\frac{a_i}{x}\rfloor + \ ...
- UOJ 做题记录
UOJ 做题记录 其实我这么弱> >根本不会做题呢> > #21. [UR #1]缩进优化 其实想想还是一道非常丝播的题目呢> > 直接对于每个缩进长度统计一遍就好 ...
随机推荐
- 如何解决python中使用flask时遇到的markupsafe._compat包缺失的问题
在使用python进行GUI的程序编写时,使用flask时出现错误: 在使用pip freeze进行查看已下载的包时显示MarkupSafe与Jinjia2都已安装: 在网上查阅一些资料后发现,在py ...
- android数据库持久化框架, ormlite框架,
前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...
- [SDOI2014]旅行
洛谷 P3313 [SDOI2014]旅行 https://www.luogu.org/problem/show?pid=3313 题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接 ...
- JAVA_SE基础——17.方法的重载
方法重载: 方法重载就是方法名称重复,加载参数不同. 具体规范: 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体. 1.如果参数个数不同,就不管它的参数类 ...
- python小练习之三---购物车程序
购物车购物的例子 严格来讲,这个例子相对大一些 功能也稍完备一些,具有用户登录,商品上架,用户购物,放入购物车,展示每个用户的购物车里的商品的数量,用户账户余额,支持用户账户充值等 下面展示的代码有些 ...
- SQL Server 实现递归查询
基础数据/表结构 Sql 语句 ;With cte(id,pid,TName)As ( Select id,pid,TName Union All Select B.i ...
- python random 模块的用法
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- linux下的Shell编程(3)shell里的流程控制
if 语句 if 表达式如果条件命令组为真,则执行 then 后的部分.标准形式: if 判断命令,可以有很多个,真假取最后的返回值 then 如果前述为真做什么 [ # 方括号代表可选,别真打进去了 ...
- 关于阿里巴巴iconfont的使用方法
iconfont网址:http://www.iconfont.cn/ 说起iconfont,做前端开发的应该知道它的好处,图标库之丰富,只有你想不到的,没有你找不到的,而且轻量高清.用户在iconfo ...
- PHP / Laravel 月刊 #23
最新资讯 Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天 Summer Dingo API 中文文档翻译召集[已完成] Summer 我最喜欢 Laravel 5.6 的三个 ...