zoukankan      html  css  js  c++  java
  • Codeforces Round #622 (Div. 2) B. Different Rules(数学)

    Codeforces Round #622 (Div. 2) B. Different Rules

    题意:

    你在参加一个比赛,最终按两场分赛的排名之和排名,每场分赛中不存在名次并列,给出参赛人数 n 和你两场分赛的排名 x, y,问你最终名次最小和最大可能是多少。

    思路:

    以8人为例:

    x + y = 2,最小第一名,最大第一名:

                  1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1              

    x + y = 3,最小第一名,最大第二名。

                1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1            

    x + y = n + 1,最小第二名,最大第 n 名。

    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1

    x + y = n + 2,最小第三名,最大第 n 名。

    1 2 3 4 5 6 7 8  
      8 7 6 5 4 3 2 1

    没错,相信聪明的你已经发现规律了:

    • 当 2 ≤ x + y  ≤ n 时,最小值总为第一名,最大值取决于 x + y 比 2 大多少,每大 1 就会对齐一对和为 x + y 的数,即最大名次 + 1。
    • 当 n + 1 ≤ x + y ≤ 2n 时,最大值总为第 n 名,最小值取决于 x + y 比 n + 1 大多少,每大 1 就会错出一对和小于 x + y 的数,即最小名次 + 1。
    #include <bits/stdc++.h>
    using namespace std;
    void solve(){
        int n,x,y;cin>>n>>x>>y;
        if(x+y<=n) cout<<1<<' '<<x+y-1<<endl;
        else cout<<min(n,x+y-n+1)<<' '<<n<<endl;
    }
    int main()
    {
        int t;cin>>t;
        while(t--)
            solve();
        return 0;
    }
  • 相关阅读:
    os模块
    sys模块
    time时间模块
    collections模块
    修改Jenkins的主目录步骤
    jenkins管理
    求2个集合的差集
    MVC动态二级域名解析
    解决MVC 时间序列化的方法
    MVC修改视图的默认路径
  • 原文地址:https://www.cnblogs.com/Kanoon/p/12526856.html
Copyright © 2011-2022 走看看