题解 CF1337A 【Ichihime and Triangle】

ShineEternal

2020-04-16 07:58:50

Solution

## description - 给定四个整数 $a,b,c,d$,你需要求出一组 $a\le x\le b$,$b\le y\le c$,$c\le z\le d$,使得以 $x,y,z$ 为三条边的长度能够组成一个三角形。**如果有多种方案,输出任意一种**。 - **输入包含多组数据**,数据组数不超过 $1000$,$1\le a\le b\le c\le d\le 10^9$。 - translate by @[ShineEternal](https://www.luogu.com.cn/user/45475)。 ## solution 这种构造类型的题目我们可以通过找特殊值来实现。 不难发现,$a,b,c,d$ 单调递增,所以 $x,y,z$ 也会单调递增。这时只需要满足 $x+y>z$ 就行了。 我们把 $x,y$ 取最大值:$x=b,y=c$;$z$ 取最小值:$z=c$。就是最有可能实现的方案。 这时我们发现 $x+y>z$,说明一定能实现。所以直接输出 `b c c` 即可。 ## code: ```cpp #include<cstdio> using namespace std; int main() { int T; scanf("%d",&T); while(T--) { int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); printf("%d %d %d\n",b,c,c); } return 0; } ```