Exam in MAC [容斥]

题意

思路

正难则反

反过来需要考虑的是:

(1) 所有满条件一的(x,y)有多少对:

x = 0 时,有c+1对 x = 1 时,有c对 ...... x = c 时,有1对

以此类推 一共有 (c+2)(c+1)/2 对

(2) 符合 x + y ∈ S的有多少对:

那就是x + y = ai 对 x = 0 而言 y有固定的一种取值ai

但是要保证的是 y <= c 所以有 c - x + 1

而x: 0->ai 所以对每一个ai有 ai/2 + 1种

(3) 符合 y - x ∈ S 的有多少对:

y - x = ai

那么 y = ai + x < c

y ∈ x,c-a\[i] 而x是从0开始的 所以每一个ai 都有 c - ai + 1 种的情况

(4) 符合 (2) + (3)的有多少对:

x + y = ai

y - x = aj

y = (ai + aj) / 2 所以要保证的是只有同奇偶性 才有这种情况

比如 奇数有{1,3,5}那么其实是C(2,3) + 3 那就是 n(n-1)/2 + n = n(n+1)/2

答案就是 odd(odd+1) / 2 + even(even+1) / 2

(LAST ) ALL IN ALL

根据容斥定理 res = (1) - (2) - (3) + (4)

cpp 复制代码
#include<iostream>
#include<cstdio>
#include<stack>
#include<vector>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<map>
#include<set>
#include<vector>
#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define PI acos(-1.0)
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int INF = 1e18 + 10;
const int N = 1e5 + 10;
const int M = 1e7 + 10;// 节点数量 3e6就够了是为什么?
const int mod = 1e9 + 7;
int n, m, k, x, now, ans;
int qcal(int a, int b) { int res = 1; while (b) { if (b & 1) res = res * a % mod; b >>= 1; a = a * a % mod; } return res; }
int a[N], b[N];
bool is_prime(int n){if (n < 2) return false; for (int i = 2; i <= n / i; i++){if (n % i == 0){return false;}}return true;}
void gzy()
{
    int c;
    cin >> n >> c;
    int ans = (1 + c) * (2 + c) / 2;
    int odd = 0,even = 0;
    for(int i = 1;i <= n;i ++)
    {
        cin >> x;
        ans -= x / 2 + 1;
        ans -= (c - x + 1);
        if(x % 2 == 0) odd ++;
        else even ++;
    }
    ans += (odd + 1) * odd / 2;
    ans += (even + 1) * even / 2;
    cout << ans << endl; 
} 
 
signed main()
{
    int _ = 1; cin >> _;
    while (_--) gzy();
    return 0;
}
// /**
//  *  ┏┓   ┏┓+ +
//  * ┏┛┻━━━┛┻┓ + +
//  * ┃       ┃
//  * ┃   ━   ┃ ++ + + +
//  *  ████━████+
//  *  ◥██◤ ◥██◤ +
//  * ┃   ┻   ┃
//  * ┃       ┃ + +
//  * ┗━┓   ┏━┛
//  *   ┃   ┃ + + + +Code is far away from  
//  *   ┃   ┃ + bug with the animal protecting
//  *   ┃    ┗━━━┓ 神兽保佑,代码无bug 
//  *   ┃  	    ┣┓
//  *    ┃        ┏┛
//  *     ┗┓┓┏━┳┓┏┛ + + + +
//  *    ┃┫┫ ┃┫┫
//  *    ┗┻┛ ┗┻┛+ + + +
//  */
相关推荐
find1star6 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
迅翼SwiftWing6 小时前
编队系列(总)|固定翼编队如何实现稳定飞行?通信架构、协同算法与工程约束深度解析
算法·架构
LB21126 小时前
力扣160 21 86
算法·leetcode·职场和发展
Tairitsu_H7 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
小智老师PMP7 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
HugoStudio_SWAN7 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
a187927218318 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
江畔柳前堤8 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
文心快码BaiduComate9 小时前
2026 OPC x AI Coding 趋势案例交流会圆满落幕:一个人就一支研发团队
算法
ACM-moran9 小时前
条件显化(二分单峰函数+构造数列)
算法·推公式·整数三分