luogu P4515 [COCI2009-2010#6] XOR 容斥】的更多相关文章

LINK:XOR 一个不常见的容斥套路题. 以往是只求三角形面积的交 现在需要求被奇数次覆盖的区域的面积. 打住 求三角形面积的交我也不会写 不过这道题的三角形非常特殊 等腰直角 且直角点都在左下方 这就有很多的性质了. 容易发现最后交出的三角形为等腰直角三角形. 考虑如何求若干个三角形交出的面积 不太会证明 题解区的一个神仙给出了一个式子. 设 \(c_i=x_i+y_i+z_i\)最终交出的三角形的直角边边长为 \(MAX(0,min(c_i)-max(x_i)-max(y_i))\) 数据…
题目链接 https://www.luogu.org/problem/P4707 题解 最近被神仙题八连爆了-- 首先Min-Max容斥肯定都能想到,问题是这题要用一个扩展版的--Kth Min-Max容斥 这个东西需要对Min-Max容斥的本质有着比较深刻的理解. 首先我们从另一个角度证明Min-Max容斥的正确性: \(\max(S)=\sum_{T\in S}f(|T|)\min(T)\), 对于第\((x+1)\)大来说它被计算的次数是\(\sum_{k\ge 0} {x\choose…
[luogu 3175] [HAOI2015]按位或 题面 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行按位或运算.问期望多少秒后,你手上的数字变成2^n-1. 分析 前置知识:min-max容斥 记\(\max(S)\)为集合\(S\)中的最大值,\(\min(S)\)为集合\(S\)中的最小值(如果\(S=\emptyset\) ,那\(\max(S)=\min(S)=0\)),那么有 \[\max(S)=\sum _{T\subseteq S}…
题目链接 先预处理出幸运数,把成倍数关系的剔掉,然后用容斥原理搜索一下. 这里的容斥很像小学学的那个“班上有n个同学,有a个同学喜欢数学,b个同学喜欢语文……”那样. #include<cstdio> #include<cstdlib> #include<cctype> #include<algorithm> #include<cstring> #define maxn 200020 using namespace std; inline lon…
题目:bzoj 2005 https://www.lydsy.com/JudgeOnline/problem.php?id=2005   洛谷 P1447 https://www.luogu.org/problemnew/show/P1447 首先,题意就是求 ∑(1 <= i <= n) ∑(1 <= j <= m) [ 2 * gcd(i,j) -1 ]: 方法1:容斥原理 枚举每个数作为 gcd 被算了几次: 对于 d ,算的次数 f[d] 就是 n/d 和 m/d 中互质的…
共有 $m$ 种物品,每个物品 $a[i]$ 个,分给 $n$ 个人,每个人至少要拿到一件,求方案数. 令 $f[i]$ 表示钦定 $i$ 个没分到特产,其余 $(n-i)$ 个人随便选的方案数,$g[i]$ 表示恰好 $i$ 个没分到特产的方案数. 按照我们之前讲的,有 $f[k]=\sum_{i=k}^{n}\binom{k}{i}g[i]\Rightarrow g[k]=\sum_{i=k}^{n}(-1)^{i-k}\binom{i}{k}f[i]$ 而根据定义,$f[i]=\binom…
luogu P4515 [COCI2009-2010#6] XOR 描述 坐标系下有若干个等腰直角三角形,且每个等腰直角三角形的直角顶点都在左下方,两腰与坐标轴平行.被奇数个三角形覆盖的面 积部分为灰色,被偶数个三角形覆盖的面积部分为白色,如下图所示. 已知 NN个等腰直角三角形的顶点坐标及腰长,求灰色部分面积. 输入输出格式 输入格式: 输入第一行包含一个整数 NN,表示等腰直角三角形数量. 接下来 NN行,每行三个整数 X, Y, RX,Y,R,分别表示等腰直角三角形的顶点坐标 (X, Y)…
题面 传送门:https://www.luogu.org/problemnew/show/P1450 Solution 这是一道很有意思的在背包里面做容斥的题目. 首先,我们可以很轻松地想到暴力做背包的做法. 就是对于每一次询问,我们都做一次背包. 复杂度O(tot*s*log(di)) (使用二进制背包优化) 显然会T得起飞. 接下来,我们可以换一种角度来思考这个问题. 首先,我们可以假设没有每个物品的数量的限制,那么这样就会变成一个很简单的完全背包问题. 至于完全背包怎么写,我们在这里就不做…
双倍经验:BZOJ 2393 Cirno的完美算数教室 做法:先把$[1,r]$中所有的幸运数字筛出来,然后用这些幸运数字来筛$[l,r]$中的近似幸运号码: 剪枝:当一个幸运数字$a[i]$是另一个幸运数字$a[j]$的倍数时,那么应该把$a[i]$去掉: 贡献用容斥搞一下好了(就是dfs部分).. #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #incl…
同样是矩阵树定理的裸题.但是要解决它需要能够想到容斥才可以. \(20\)以内的数据范围一定要试试容斥的想法. #include <bits/stdc++.h> using namespace std; #define int long long const int N = 17 + 5; const int mod = 1000000007; int n, k, mat[N][N]; vector <int> u[N], v[N]; int gauss (int n) { int…