Trick : 不等式合并的产生的解集放大问题

Trick : 不等式合并的产生的解集放大问题

不等式合并的范围问题

问题引入

假设有 x ≥ 2 ,    y ≥ 3 x\geq 2,\;y\geq 3 x2,y3 , 考虑合并两个不等式,得到 x + y ≥ 5 x + y \geq 5 x+y5

如果求解 x + y ≥ 5 x + y \geq 5 x+y5 , 显然 x ≥ 2 ,    y ≥ 3 x\geq2,\;y\geq3 x2,y3 只是 x + y ≥ 5 x+y\geq 5 x+y5 的其中一个解,也就是说,合并不等式之后,解集的范围变大了 !

问题分析

注意到, x + y ≥ 5 x+y\geq 5 x+y5 x ≥ 2 ,    y ≥ 3 x\geq 2,\;y\geq 3 x2,y3 的一个必要条件。

也就是说,合并不等式之后,新的不等式是原不等式方程组的一个必要条件,而不是一个充分条件。

设原不等式方程组的解集是 U 1 U_1 U1 , 新不等式的解集是 U 2 U_2 U2 , 那么显然 U 1 ∈ U 2 U_1\in U_2 U1U2

即,新的不等式的解集包含原来的不等式方程组的解集,对新解集的所有解套到原来的不等式方程组进行验证即可,因为答案一定不会少统计。

一道不等式合并的题目

6.没时间了!【算法赛】 - 蓝桥云课 (lanqiao.cn)

求满足以下条件的等差数列的数量 :

  1. 数列的长度为 1 0 10000000000 10^{10000000000} 1010000000000 , 其实就是无限大

  2. 首项和公差必须是正整数

  3. 所有小于等于 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 1a<b2n<2ba

{ 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. {2bab+a2n+12n+1

合并两个不等式,得到 3 b ≥ 4 n + 2 3b\geq 4n+2 3b4n+2 , 即 b ≥ ⌈ 4 n + 2 3 ⌉ b\geq \lceil \frac {4n+2} 3 \rceil b34n+2

进一步, ⌈ 4 n + 2 3 ⌉ ≤ b ≤ 2 n \lceil \frac {4n+2} 3 \rceil \leq b \leq 2n 34n+2b2n

根据上述推导,现在得到的 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. {aa2b2n12n+1b

2 n + 1 − b ≤ a ≤ 2 b − 2 n − 1 2n+1-b\leq a\leq 2b-2n-1 2n+1ba2b2n1

l = 2 n + 1 − b l=2n+1-b l=2n+1b , r = 2 b − 2 n − 1 r=2b-2n-1 r=2b2n1

r − l + 1 = 3 b − 4 n − 1 r-l+1=3b-4n-1 rl+1=3b4n1 , 所以 a a a 共有 3 b − 4 n − 1 3b-4n-1 3b4n1 种取值。

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=2nx+1

显然 3 x − 4 n − 1 3x-4n-1 3x4n1 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×(3x4n1)+2y(y1)×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+(m1)d2n 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+(m1)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';
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值