Trick : 不等式合并的产生的解集放大问题
不等式合并的范围问题
问题引入
假设有 x ≥ 2 , y ≥ 3 x\geq 2,\;y\geq 3 x≥2,y≥3 , 考虑合并两个不等式,得到 x + y ≥ 5 x + y \geq 5 x+y≥5 。
如果求解 x + y ≥ 5 x + y \geq 5 x+y≥5 , 显然 x ≥ 2 , y ≥ 3 x\geq2,\;y\geq3 x≥2,y≥3 只是 x + y ≥ 5 x+y\geq 5 x+y≥5 的其中一个解,也就是说,合并不等式之后,解集的范围变大了 !
问题分析
注意到, x + y ≥ 5 x+y\geq 5 x+y≥5 是 x ≥ 2 , y ≥ 3 x\geq 2,\;y\geq 3 x≥2,y≥3 的一个必要条件。
也就是说,合并不等式之后,新的不等式是原不等式方程组的一个必要条件,而不是一个充分条件。
设原不等式方程组的解集是 U 1 U_1 U1 , 新不等式的解集是 U 2 U_2 U2 , 那么显然 U 1 ∈ U 2 U_1\in U_2 U1∈U2 。
即,新的不等式的解集包含原来的不等式方程组的解集,对新解集的所有解套到原来的不等式方程组进行验证即可,因为答案一定不会少统计。
一道不等式合并的题目
6.没时间了!【算法赛】 - 蓝桥云课 (lanqiao.cn)
求满足以下条件的等差数列的数量 :
数列的长度为 1 0 10000000000 10^{10000000000} 1010000000000 , 其实就是无限大
首项和公差必须是正整数
所有小于等于 2 n 2n 2n 的项的总和大于 2 n 2n 2n 。
我们按照如下三种情况进行讨论 :
- 只有一项 ≤ 2 n \leq 2n ≤2n
显然这种情况对答案没贡献。
- 有两项 ≤ 2 n \leq 2n ≤2n
不妨设这两项为 a , b a,\,b a,b 且 a < b a<b a<b , 那么就有 1 ≤ a < b ≤ 2 n < 2 b − a 1\leq a<b\leq 2n <2b-a 1≤a<b≤2n<2b−a 。
{ 2 b − a ≥ 2 n + 1 b + a ≥ 2 n + 1 \left\{ \begin{aligned} 2b-a & \geq & 2n+1 \\ b+a & \geq & 2n+1 \\ \end{aligned} \right. {2b−ab+a≥≥2n+12n+1
合并两个不等式,得到 3 b ≥ 4 n + 2 3b\geq 4n+2 3b≥4n+2 , 即 b ≥ ⌈ 4 n + 2 3 ⌉ b\geq \lceil \frac {4n+2} 3 \rceil b≥⌈34n+2⌉ 。
进一步, ⌈ 4 n + 2 3 ⌉ ≤ b ≤ 2 n \lceil \frac {4n+2} 3 \rceil \leq b \leq 2n ⌈34n+2⌉≤b≤2n 。
根据上述推导,现在得到的 b b b 一定包含合法的 b b b ,我们只需要固定每个 b b b , 检查有多少 a a a 合法即可。
对不等式方程组进行移项,可以得到
{ a ≤ 2 b − 2 n − 1 a ≥ 2 n + 1 − b \left\{ \begin{aligned} a & \leq & 2b-2n-1 \\ a & \geq & 2n+1-b \\ \end{aligned} \right. {aa≤≥2b−2n−12n+1−b
即 2 n + 1 − b ≤ a ≤ 2 b − 2 n − 1 2n+1-b\leq a\leq 2b-2n-1 2n+1−b≤a≤2b−2n−1 。
设 l = 2 n + 1 − b l=2n+1-b l=2n+1−b , r = 2 b − 2 n − 1 r=2b-2n-1 r=2b−2n−1 。
得 r − l + 1 = 3 b − 4 n − 1 r-l+1=3b-4n-1 r−l+1=3b−4n−1 , 所以 a a a 共有 3 b − 4 n − 1 3b-4n-1 3b−4n−1 种取值。
且 b b b 每增加 1 1 1 , a a a 增加 3 3 3 。即 a a a 的解集是一个等差数列 s s s 。
设 x = ⌈ 4 n + 2 3 ⌉ x=\lceil \frac {4n+2} 3 \rceil x=⌈34n+2⌉ , y = 2 n − x + 1 y=2n-x+1 y=2n−x+1
显然 3 x − 4 n − 1 3x-4n-1 3x−4n−1 是 s s s 的首项, y y y 是 s s s 的项数。
那么这种情况就一共有 y × ( 3 x − 4 n − 1 ) + y ( y − 1 ) 2 × 3 y\times (3x-4n-1)+\frac{y(y-1)}{2}\times 3 y×(3x−4n−1)+2y(y−1)×3 种答案。
- 有三项及以上项 ≤ 2 n \leq 2n ≤2n
设有 m m m 项不超过 2 n 2n 2n , 那么有 a 1 < a 1 + d < ⋯ < a 1 + ( m − 1 ) d ≤ 2 n a_1<a_1+d<\cdots < a_1+(m-1)d\leq 2n a1<a1+d<⋯<a1+(m−1)d≤2n 且 a 1 + m d > 2 n a_1+md>2n a1+md>2n 。
注意到, a 1 + d + ( a 1 + ( m − 1 ) d ) = 2 a 1 + m d > a 1 + m d > 2 n a_1+d+(a_1+(m-1)d)=2a_1+md>a_1+md>2n a1+d+(a1+(m−1)d)=2a1+md>a1+md>2n 。
即,这种情况一定成立。
接下来就是这种情况有多少种的问题了。
显然,只需要第一项跟第三项 ≤ 2 n \leq 2n ≤2n 即可。且注意到第一项跟第三项奇偶性相同,因此相当于从 n n n 个奇数中挑 2 2 2 个数 + 从 n n n 个偶数中挑两个数,即为 2 × ( n 2 ) 2 \times {{n} \choose 2} 2×(2n) 。
constexpr int P = 998244353;
using Z = MInt<P>;
void solve(){
int n;
cin >> n;
Z x = (n * 4 + 4) / 3, y = n * 2 - x + 1;
Z res = y * (x * 3 - n * 4 - 1) + y * (y - 1) / 2 * 3 + n * (n - 1);
cout << res << '\n';
}