思路:
最坏的情况就是凑和为 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\n",good,bad); } return 0; }
原文:https://www.cnblogs.com/-Ackerman/p/12392469.html