zoukankan      html  css  js  c++  java
  • [UOJ #21]【UR #1】缩进优化

    题目大意:给你$a_i$,表示第$i$行有$a_i$个空格,你需要确定一个$TAB$宽度,使得剩下的字符最少

    题解:做前缀和,发现枚举$TAB$暴力求解是$O(nlog_2n)$的,完全可以过

    卡点:

    C++ Code:

    #include <cstdio>
    #include <algorithm>
    #define maxn 1000010
    const long long inf = 0x3f3f3f3f3f3f3f3f;
    int n, M;
    long long __s[maxn], sum, ans, *s = __s + 1;
    int main() {
    	scanf("%d", &n);
    	for (int i = 1, x; i <= n; i++) {
    		scanf("%d", &x);
    		s[x]++;
    		sum += x;
    		M = std::max(x, M);
    	} ans = sum;
    	for (int i = 1; i <= M; i++) s[i] += s[i - 1];
    	for (int i = 2; i <= M; i++) {
    		long long res = 0, j;
    		for (j = i; j <= M; j += i) {
    			res += (s[j - 1] - s[j - i - 1]) * (j / i - 1);
    		}
    		res += (s[M] - s[j - i - 1]) * (M / i);
    		ans = std::min(ans, sum - res * (i - 1));
    	}
    	printf("%lld
    ", ans);
    	return 0;
    }
    

      

  • 相关阅读:
    nginx负载均衡实现
    shiro 退出 清除缓存
    从零到实现Shiro中Authorization和Authentication的缓存
    Mysql 语句
    N! java
    大数java(pow)
    HDU_1548
    Mike and strings 798B
    Array Division 808D
    poj_1979(dfs)
  • 原文地址:https://www.cnblogs.com/Memory-of-winter/p/9799455.html
Copyright © 2011-2022 走看看