●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]缩进优化 其实想想还是一道非常丝播的题目呢> > 直接对于每个缩进长度统计一遍就好 ...
随机推荐
- Beta冲刺第四天
一.昨天的困难 没有困难. 二.今天进度 1.林洋洋:修复协作详情,日程详情日程类型显示纠正 2.黄腾达:修复管理者查看协作成员可以移除自己的问题,加入登录.注册表单按回车键就可直接完成操作的功能 3 ...
- Linux系统安装gcc/g++详细过程
下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2 浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/ ...
- Android接受验证码自动填入功能(源码+已实现+可用+版本兼容)
实际应用开发中,会经常用到短信验证的功能,这个时候如果再让用户就查看短信.然后再回到界面进行短信的填写,难免有多少有些不方便,作为开发者.本着用户至上的原则我们也应该来实现验证码的自动填写功能,还有一 ...
- 从PRISM开始学WPF(六)MVVM(三)事件聚合器EventAggregator?
从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WPF(三)Prism-Region? 从PRISM开始学WPF(四)Prism-Module? ...
- ThinkPad安装deepin操作系统报错解决方法
目前deepin操作系统,软件也比较多,所以想在自己的thinkpad t430笔记本上安装.但是安装时报错,具体错误忘了看了.反复试了好几次都不行,最后在网上查了,讲bios设置调整之后可以正常安装 ...
- mint-ui在vue中的使用。
首先放上mint-ui中文文档 近来在使用mint-ui,发现部分插件在讲解上并不是很详细,部分实例找不到使用的代码.github上面的分享,里面都是markdown文件,内容就是网上的文档 刚好自己 ...
- python实现维吉尼亚解密
# -*-coding:UTF-8-*- from sys import stdout miwen = "KCCPKBGUFDPHQTYAVINRRTMVGRKDNBVFDETDGILTXR ...
- Django rest framework源码分析(4)----版本
版本 新建一个工程Myproject和一个app名为api (1)api/models.py from django.db import models class UserInfo(models.Mo ...
- 爬虫系列(1)-----python爬取猫眼电影top100榜
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...
- AngularJS1.X学习笔记13-路由
ThinkPHP框架有路由的概念,看起来路由更多的是后端的事情,Angular怎么也会跑出个路由呢?事实上,Angular是着眼于单页应用的,他的一个应用一般来说是一个页面,你所看到的页面内容的改变, ...