zoukankan      html  css  js  c++  java
  • uoj21 【UR #1】缩进优化

    题目

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

    [sum_{i=1}^nleft lfloor frac{a_i}{T} ight floor+sum_{i=1}^na_i\%T ]

    非常显然的(a_i\%T=a_i-left lfloor frac{a_i}{T} ight floor imes T)

    于是

    [sum_{i=1}^nleft lfloor frac{a_i}{T} ight floor+sum_{i=1}^na_i-T imes sum_{i=1}^nleft lfloor frac{a_i}{T} ight floor ]

    即为

    [sum_{i=1}^na_i-(T-1)sum_{i=1}^nleft lfloor frac{a_i}{T} ight floor ]

    最小化这个柿子只需要最大化((T-1)sum_{i=1}^nleft lfloor frac{a_i}{T} ight floor)

    考虑一次枚举(T),需要快速求出(sum_{i=1}^nleft lfloor frac{a_i}{T} ight floor)

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

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

    复杂度显然调和级数,视(n)(max a_i)同级,复杂度为(O(nlog 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
    ",ans-tmp);
        return 0;
    }
    
    
  • 相关阅读:
    面向消息的持久通信与面向流的通信
    通信协议
    分布式系统简介
    Hadoop on Yarn 各组件详细原理
    Parquet文件结构笔记
    Redis部分数据结构方法小结
    Storm Ack框架笔记
    MapReduce格式与类型
    Hadoop 2.6 MapReduce运行原理详解
    Hadoop SequenceFile数据结构介绍及读写
  • 原文地址:https://www.cnblogs.com/asuldb/p/11455826.html
Copyright © 2011-2022 走看看