zoukankan      html  css  js  c++  java
  • 购物 [思维题]

    购物


    color{red}{正解部分}

    若能凑出 xx, 则 [x2,x][lceil frac{x}{2} ceil, x] 内的数字全部为 美妙的数字,

    美妙的数字 出现范围为 [1,ai][1, sum a_i], 题目转化 为: 求 [1,ai][1, sum a_i] 中有多少数字不是 美妙的数字 .

    这里有个神奇的方法,
    aia_i 从小到大 排序, 记 aia_i 前缀和sumisum_i,


    则区间 (sumi1,ai2)(sum_{i-1}, frac{a_i}{2}) 中的数字必定不是 美妙的数字 .

    简单理解为: 小的凑不出来, 大的直接越界 .

    于是统计出 绝对不是 美妙的数字 的数量, 用 aisum a_i 减去即是答案 .


    color{red}{实现部分}

    #include<bits/stdc++.h>
    #define reg register
    typedef long long ll;
    
    int read(){
            char c;
            int s = 0, flag = 1;
            while((c=getchar()) && !isdigit(c))
                    if(c == '-'){ flag = -1, c = getchar(); break ; }
            while(isdigit(c)) s = s*10 + c-'0', c = getchar();
            return s * flag;
    }
    
    const int maxn = 1e5 + 10;
    
    int N;
    int A[maxn];
    
    ll sum;
    ll sum_2;
    
    int main(){
            N = read();
            for(reg int i = 1; i <= N; i ++) A[i] = read();
            std::sort(A+1, A+N+1);
            for(reg int i = 1; i <= N; i ++){
                    sum_2 += std::max(0ll, (A[i]-1)/2 - sum);
                    sum += A[i];
            }
            printf("%lld
    ", sum - sum_2);
            return 0;
    }
    
  • 相关阅读:
    xamp配置多域名站点
    POJ1611-The Suspects-ACM
    POJ2524-宗教问题-并查集-ACM
    POJ3274-牛的属性-HASH-ACM
    拓扑排序-DFS
    拓扑排序
    POJ1007-DNA Sorting-ACM
    POJ1258-Agri-Net-ACM
    wdcp-apache配置错误导致进程淤积进而内存吃紧
    wdcp-apache开启KeepAlive提高响应速度
  • 原文地址:https://www.cnblogs.com/zbr162/p/11822451.html
Copyright © 2011-2022 走看看