会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
正整数对满足 x+y=s 且 x,y≥1,等价于 x 取遍 1,2,…,s−1,对应 y=s−x。不计禁用时一共有 s−1 个有序对。
禁用集合会让部分有序对非法。采用「正难则反」:从 s−1 出发减去被禁用破坏的对。把禁用值放入哈希集合,然后枚举每个禁用值 g:
- 若 g≥s,它不可能作为 x 或 y,忽略;
- 若 g=s/2(此时 s 为偶数),只有有序对 (g,g) 被破坏,答案减
1;
- 否则有序对 (g,s−g) 与 (s−g,g) 都会非法,答案减
2。