zoukankan      html  css  js  c++  java
  • CF Polycarpus' Dice (数学)

    Polycarpus' Dice
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Polycarp has n dice d1, d2, ..., dn. The i-th dice shows numbers from 1 to di. Polycarp rolled all the dice and the sum of numbers they showed is A. Agrippina didn't see which dice showed what number, she knows only the sum A and the values d1, d2, ..., dn. However, she finds it enough to make a series of statements of the following type: dice i couldn't show number r. For example, if Polycarp had two six-faced dice and the total sum is A = 11, then Agrippina can state that each of the two dice couldn't show a value less than five (otherwise, the remaining dice must have a value of at least seven, which is impossible).

    For each dice find the number of values for which it can be guaranteed that the dice couldn't show these values if the sum of the shown values is A.

    Input

    The first line contains two integers n, A (1 ≤ n ≤ 2·105, n ≤ A ≤ s) — the number of dice and the sum of shown values where s = d1 + d2 + ... + dn.

    The second line contains n integers d1, d2, ..., dn (1 ≤ di ≤ 106), where di is the maximum value that the i-th dice can show.

    Output

    Print n integers b1, b2, ..., bn, where bi is the number of values for which it is guaranteed that the i-th dice couldn't show them.

    Sample test(s)
    input
    2 8
    4 4
    output
    3 3 
    input
    1 3
    5
    output
    4 
    input
    2 3
    2 3
    output
    0 1 



    当前骰子最小值 + 剩余筛子最大值 >= A
    当前骰子最大值 + 剩余筛子最小值 <= A
    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <cstdio>
    #include <string>
    #include <algorithm>
    #include <cctype>
    #include <queue>
    #include <map>
    using    namespace    std;
    
    int    main(void)
    {
        int        n;
        int        s[200005];
        long    long    A;
        long    long    sum = 0;
        long    long    ans = 0;
    
        cin >> n >> A;
        for(int i = 0;i < n;i ++)
        {
            cin >> s[i];
            sum += s[i];
        }
        for(int i = 0;i < n;i ++)
        {
            long    long    m_min = A - sum + s[i];
            long    long    m_max = A - (n - 1);
            if(m_max > s[i])
                m_max = s[i];
            ans = s[i] - m_max + (m_min - 1 > 0 ? m_min - 1: 0);
            cout << ans;
            if(i != n - 1)
                cout << ' ';
        }
        cout << endl;
    
        return    0;
    }
  • 相关阅读:
    (ubuntu ufw)My firewall is blocking network connections from the docker container to outside
    nginx repos
    Xvfb新建虚拟X窗口,通过x11vnc启动VNC Server并转发Xvfb启动的虚拟窗口
    xdotool xdotool模拟击键和鼠标移动--CutyCapt是一个截图工具,xvfb-run
    zabbix debug and vulnerability https://www.zabbix.com/documentation/3.0/manual/concepts/sender
    初探 Nginx 架构
    Nginx缓存
    Nginx代理功能与负载均衡详解
    CentOS 7 部署 nginx-1.14.2
    LDAP第三天 MySQL+LDAP 安装
  • 原文地址:https://www.cnblogs.com/xz816111/p/4438962.html
Copyright © 2011-2022 走看看