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 - a[i] + 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 
//  *   ┃  	    ┣┓
//  *    ┃        ┏┛
//  *     ┗┓┓┏━┳┓┏┛ + + + +
//  *    ┃┫┫ ┃┫┫
//  *    ┗┻┛ ┗┻┛+ + + +
//  */
相关推荐
OTWOL11 分钟前
【C++编程入门基础(一)】
c++·算法
谏君之17 分钟前
C语言实现的常见算法示例
c语言·算法·排序算法
宇寒风暖1 小时前
侯捷 C++ 课程学习笔记:内存管理与工具应用
c++·笔记·学习
机器视觉知识推荐、就业指导1 小时前
【数字图像处理二】图像增强与空域处理
图像处理·人工智能·经验分享·算法·计算机视觉
Smile丶凉轩1 小时前
数据库面试知识点总结
数据库·c++·mysql
Want5952 小时前
C/C++跳动的爱心
c语言·开发语言·c++
laimaxgg2 小时前
Qt常用控件之数字显示控件QLCDNumber
开发语言·c++·qt·qt5·qt6.3
蓝天扶光2 小时前
c++贪心系列
开发语言·c++
IT猿手2 小时前
超多目标优化:基于导航变量的多目标粒子群优化算法(NMOPSO)的无人机三维路径规划,MATLAB代码
人工智能·算法·机器学习·matlab·无人机
Erik_LinX2 小时前
算法日记25:01背包(DFS->记忆化搜索->倒叙DP->顺序DP->空间优化)
算法·深度优先