B. Different Rules

思路:

最坏的情况就是凑和为 x+y ,可以凑 x+y-1 对

最好的情况就是 :

1、x+y <= n

那么我们让 1 和 n,2 和 n-1 ,3 和 n-2 这样凑,这样的话排名肯定是第一名 (其他都比 x+y 大)

2、x+y > n

我们就考虑把这种情况转化为 1 情况,让 1 和 1 配对,2 和 2 配对这样,可以配对 x - t  + y - t = n - t => t = x + y - n

所以排名是 x + y - n + 1

#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
    int t,n,x,y,good,bad;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d%d",&n,&x,&y);
        bad=min(n,x+y-1);
        if(x+y<=n)good=1;
        else good=min(n,x+y-n+1);//x+y>=n+1
        printf("%d %d
",good,bad);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/-Ackerman/p/12392469.html