3-sided dice
一个骰子有 3 个面(记作 A,B,C 面),3 个面上分别有 3 个数字。
本题中先给出了 3 个骰子,每个骰子给出 3 个面的数字,并且保证对于每个骰子,3 个面的数字和为 10000。之后再给出一个我们希望得到的 A,B,C 面的结果,然后希望你给 3 个骰子分配概率:第一个骰子分配概率 p1,第二个 p2,第三个 p3,满足
- p1+p2+p3=1,且 p1,p2,p3 都严格大于 0;
- 3 个骰子的每个面的期望和等于给出的那个面的期望。
例如,样例的第一组数据中给出的三个骰子为
0 0 10000
0 10000 0
10000 0 0
即骰子 1 为 A(0),B(0),C(10000),骰子 2 为 A(0),B(10000),C(0),骰子 3 为 A(10000),B(0),C(0),目标为 A(3000),B(4000),C(3000)。
于是我们可以分配 p1=103,p2=104,p3=103,这样
A 面期望B 面期望C 面期望=p1×0+p2×0+p3×10000=3000,=p1×0+p2×10000+p3×0=4000,=p1×10000+p2×0+p3×0=3000.
输入格式
输入包含多组数据,每组数据之间用一个空行分隔。
每组数据由四行组成:前三行描述给出的 3 个骰子,最后一行描述希望模拟出的骰子。每行包含 3 个空格分隔的整数,表示该骰子 A,B,C 面的点数(即掷出结果 1,2,3 的概率的 10000 倍)。
当读到一行 3 个 0 时,表示数据结束(该行之前同样有一个空行)。
输出格式
对于每组数据输出一行:如果可以分配 p1,p2,p3 满足以上条件,则输出 YES,否则输出 NO。
样例输入
0 0 10000
0 10000 0
10000 0 0
3000 4000 3000
0 0 10000
0 10000 0
3000 4000 3000
10000 0 0
0 0 0
样例输出
YES
NO
样例解释
第一组数据的构造方法见题目描述。第二组数据无论如何分配概率都无法满足条件,因此输出 NO。
数据范围
- 每行 3 个整数都在 0 到 10000 之间,且这 3 个数之和为 10000。
来源与许可
本题题面与测试数据整理自 BZOJ 2271。
样例 1
输入
0 0 10000
0 10000 0
10000 0 0
3000 4000 3000
0 0 10000
0 10000 0
3000 4000 3000
10000 0 0
0 0 0
输出
YES
NO