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;
    }
    
  • 相关阅读:
    Red hat 5挂载U盘
    Win7+VMware Workstation环境下的CentOS-Linux网络连接设置
    rand()随机数的产生
    phpmyadmin数据库导入出错
    dede忽略错误
    wamp
    网页地图map
    Redefining already defined constructor
    SCREAM:Error suppression ignored for
    Python+selenium之疑难点解决之去除readonly的限制
  • 原文地址:https://www.cnblogs.com/zbr162/p/11822451.html
Copyright © 2011-2022 走看看