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;
    }
  • 相关阅读:
    Vue-基础(四)
    Vue-基础(三)
    Vue-基础(一)
    Vue-基础(二)
    CSS-初始化模板2(common.css)
    CSS-初始化模板1(normalize.css)
    CSS预处理器-Less
    MySQL视窗函数row_number(), rank(), denser_rank()
    LeetCode第4题:寻找两个有序数组的中位数
    无重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/Kanoon/p/12526856.html
Copyright © 2011-2022 走看看