bzoj3622】的更多相关文章

原文链接https://www.cnblogs.com/zhouzhendong/p/9276479.html 题目传送门 - BZOJ3622 题意 给定两个序列 $a,b$ ,各包含 $n$ 个数字. 现在给 $a$ 中元素与 $b$ 中元素配对.问使得所有配对中 $a_?>b_?$ 的个数比 $a_?<b_?$ 的个数恰好多 $k$ 的方案总数. 答案对 $10^9+9$ 取模,保证 $a$ 和 $b$ 中的所有数字互不相同. $n\leq 2000$ 题解 首先闭着眼睛排个序. 然后,…
再谈容斥原理来两道套路几乎一致的题目[BZOJ2839]集合计数Description一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~)首先我们发现他要求取出的集合是不同的所以通常的套路是容斥令一个东西在保证取出的集合是不同的情况下求出那个时候的答案因为如果按照集合重复来容斥就比较复杂我们考虑交集至少为i的方案数有f(i)=C(n,i)*(2^(2^(n-i…
[BZOJ3622]已经没有什么好害怕的了(动态规划,容斥) 题面 BZOJ 题解 很明显的,这类问题是要从至少变成恰好的过程,直接容斥即可. 首先我们要求的是(糖果>药片)=(药片>糖果)+k,再加上保证不存在相同的数, 所以(糖果>药片)+(药片>糖果)=n,解出(糖果>药片)=\(\frac{n+k}{2}\). 此时我们要求的至少就是"至少存在\(i\)对(糖果>药片)的方案数". 直接算很麻烦,那就\(dp\)算.首先进行排序. 设\(f[…
显然可以转化为一个阶梯状01矩阵每行每列取一个使权值和为k的方案数.直接做不可做,考虑设f[i][j]为前i行权值和至少为j,即在其中固定了j行选1的方案数.设第i行从1~a[i]列都是1且a[i]+1列是0,则f[i][j]=f[i-1][j]+f[i-1][j-1]*(a[i]-j+1).剩下的可以随便填,于是f[n][i]*=(n-i)!.求完之后考虑容斥,权值和恰好为x的在权值和至少为k的方案中被算了C(x,k)次,得ans=Σ(-1)i-kf[n][i]·C(i,k) (i=k~n).…
[BZOJ3622]已经没有什么好害怕的了 Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相同. 还有输入应该是第二行是糖果,第三行是药片 题解:好吧这题不是神题,而是套路题,容斥+DP的套路在很多题中都用到过,不过我虽然知道套路,却被这题的第一步卡住了. 我们将两个序列从小到大排序. 好吧这步看起来可能很水,正常人看到无序的序列都会先想到排序,…
给定两个数组a[n]与b[n](数全不相等),两两配对,求“a比b大”的数对比“b比a大”的数对个数多k的配对方案数. 据说做了这题就没什么题好害怕的了,但感觉实际上这是一个套路题,只是很难想到. 首先显然“a比b大”的个数是确定的,问题转化成求“a比b大”的数对个数为m的方案数. 不好算考虑容斥,总结下容斥的一些套路.(From ATP's Blog) 1.全部-至少一个+至少两个-…=一个也没有的 2.所有的-一个也没有的=至少有一个的 3.至少有k个的-C(k+1,k)* 至少有k+1个的…
题目链接 BZOJ3622 题解 既已开题 那就已经没有什么好害怕的了 由题目中奇怪的条件我们可以特判掉\(n - k\)为奇数时答案为\(0\) 否则我们要求的就是糖果大于药片恰好有\(\frac{n - k}{2} + k\)个的方案数,我们记为\(K\) 思路1 直接求恰好不好求,想到二项式反演: 如果有 \[b_k = \sum\limits_{i = k}^{n} {i \choose k} a_i\] 那么有 \[a_k = \sum\limits_{i = k}^{n} (-1)^…
bzoj-3622 已经没有什么好害怕的了 题目大意: 数据范围:$1\le n \le 2000$ , $0\le k\le n$. 想法: 首先,不难求出药片比糖果小的组数. 紧接着,我开始的想法是 $f_{(i,j)}$表示前$i$个糖果中,满足糖果比药片大的组数是$j$的方案数. 进而发现需要将两个数组排序. 到这里一切都很正常,但是我们发现了一个问题:就是我在转移的时候,分两种情况讨论.第一种是当前糖果配对的药片比自己大,第二种是比自己小. 这样的话我需要乘上两个组合数. 但是我们仔细…
bzoj3622已经没有什么好害怕的了 题意: 给n个数Ai,n个数Bi,将Ai中的数与Bi中的数配对,求配对Ai比Bi大的比Bi比Ai大的恰好有k组的方案数.n,k≤2000 题解: 蒟蒻太弱了只能引用神犇题解 “ 我们将两个读入的数组排序,令 next[i] 表示最大的 j 满足 A[i]>B[j],令f[i][j]表示枚举到第i个A时,有j组A>B,但剩下的情况是不考虑的,则f[i][j]=f[i-1][j]+f[i-1][j-1]*(next[i]-j+1).但若把 f[n][s] 直…
Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相同. 还有输入应该是第二行是糖果,第三行是药片 首先$a_i>b_i$的情况数: $k=\frac{n+k}{2}$ 如果不能整除则无解 先按a,b排序 预处理出$l[i]$,表示$a_i$大于$b_j$的最大j 这样设f[i][j]表示当前a序列第i个数,有j组$a>b$的方案 使$a_i>…
3622: 已经没有什么好害怕的了 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1033  Solved: 480[Submit][Status][Discuss] Description Input Output Sample Input 4 25 35 15 4540 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相同. 还有输入应该是第二行是糖果,第三行是药片 考虑dp两个数组排序,可以求出有m组糖…
Description 已经使 Modoka 有签订契约, 和自己一起战斗的想法后 , Mami 忽然感到自己不再是孤单一人了呢. 于是, 之前的谨慎的战斗作风也消失了 , 在对 Charlotte 的傀儡使用终曲--Tiro Finale后 , Mami 面临着即将被 Charlotte 的本体吃掉的局面. 这时, 已经多次面对过 Charlotte 的 Homura 告诉了学 OI 的你这样一个性质--Charlotte的结界中有两种具有能量的元素--一种是"糖果" , 另一种是&…
题目链接: 洛谷 BZOJ 题目大意:有两个长为 $n$ 的序列 $a,b$,问有多少种重排 $b$ 的方式,使得满足 $a_i>b_i$ 的 $i$ 的个数比满足 $a_i<b_i$ 的 $i$ 的个数恰好多 $k$ 个.答案对 $10^9+9$ 取模. $1\le n\le 2000,0\le k\le n$.保证 $a,b$ 中没有相同的数. 首先根据小学数学知识可知,$a_i>b_i$ 的个数应该是 $\frac{n+k}{2}$.如果 $n+k$ 不是偶数那么就无解. 那么就可…
Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相同. 还有输入应该是第二行是糖果,第三行是药片 Sol 先把两个数组排序,能够把题目的分析难度降低一些. 然后我们求出\(r[i]\)表示b中小于\(a[i]\)的最靠右的位置,这样dp的时候就能够\(O(1)\)转移了. 设\(f[i][j]\)表示考虑了i位,至少有j个满足a>b的方案数. 显然…
题目描述 给出 \(n\) 个数 \(a_i\)​ ,以及 \(n\) 个数 \(b_i\)​ ,要求两两配对使得 \(a>b\) 的对数减去 \(a<b\) 的对数等于 \(k\) . \(0≤k≤n≤2000\),保证 \(a,b\) 无相同元素. 题解 我们假设 \(a>b\) 对数为 \(x\) ,可以求得 \(x=\frac{n+k}{2}\) . 先对两个数组都排序 设\(pos[i]\)表示最大的\(j\)使得\(a_i>b_j\) 我们令 \(f_{i,j}\)​…
点此看题面 大致题意: 有\(n\)个糖果和\(n\)个药片,各有自己的能量.将其两两配对,求糖果比药片能量大的组数恰好比药片比糖果能量大的组数多\(k\)组的方案数. 什么是广义容斥(二项式反演) 我们首先来介绍一下什么是广义容斥. 我们要证明下面这样一个式子: \[f_n=\sum_{i=0}^nC_n^ig_i⇔g_n=\sum_{i=0}^n(-1)^{n-i}C_{n}^if_i\] 观察右边这个式子,我们将\(f_n=\sum_{i=0}^nC_n^ig_i\)代入就可以得到: \[…
思路 "恰k个"考虑求至少k.k+1--个容斥 题面说所有数字都不同,可以将所求转化为糖比药多的组数恰为\((n+k)/2\)的方案数 \(f[i][j]\)数组我觉得更好的理解方式是"前i个已经安排了j组糖大于药.别的先没管"的方案数 \(f[n][i]*(n-i)!\)即为把其它的安排了以后的方案数,但是这里面有重的 设\(g[i]\)为恰i个的方案数.\[g[i]=f[n][i]*(n-i)!-\sum_{j=i+1}^ng[j]*C_j^i\]要说为什么又去…
容斥原理 看见恰好k个就要容斥 g[i]表示有几个b比a小 dp[i][j]表示前i个数至少有j个大的方案数,dp[i][j]=dp[i-1][j]+dp[i-1][j-1]*(g[i]-j+1),就是可以不匹配,或者在剩下的g[i]-j+1选一个 然后就是容斥了,那个系数搞的不是很清楚,和spring一样 #include<bits/stdc++.h> using namespace std; typedef long long ll; , P = 1e9 + ; int n, k; ll…
分析 说白了就是一道先DP再二项式反演的水题,然后被脑残博主把"多\(k\)组"看成了"糖果比药片能量大的组数恰好为\(k\)组",还改了各种奇怪的地方,最后看了别人的题解才突然意识到这一点. 看来博主离退役不远了,快把我拖走吧没救了没救了. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(register int i=(a);i<=(b);++i) #define irin(i,a,b) fo…
Description: ​ 有两个数组a和b,两两配对,求 \(a_i>b_i\) 的配对比 \(b_i>a_i\) 的配对多 \(k\) 个的方案数 \(k\le n\le 2000\) Solution: ​ 先将 \(a,b\) 排序,求出 \(cnt[i]\) 表示比 \(a[i]\) 小的 \(b[j]\) 有多少个,然后恰好k个不好求,求至少 \(k\) 个,然后容斥. ​ 设 \(dp[i][j]\) 表示到 \(a\) 的前 \(i\) 位,有 \(j\) 对 \(a>…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3622 题解 首先显然如果 \(n - k\) 为奇数那么就是无解.否则的话,"糖果"比"药片"大的组数,应该为 \(\frac {n+k}2\). 考虑到多恰好 \(k\) 组不太好求,但是如果选了 \(k\) 组必须是"糖果"比"药片"大,这个方案数还是很好求的. 首先是选了 \(k\) 组必须是"糖果&quo…
F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ ModifyUser  Logout 捐赠本站 2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 854  Solved: 470 Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…
[BZOJ3622]已经没有什么好害怕的了 Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相同. 题意:给定a数组和b数组,大小都为N,现在让你两两配对,使得a>b个个数=(N+K)/2; a<b的个数=(N-K)/2; 思路:用容斥来求.  我们假设a>b为A情况,a<b为B情况.先让ab数组分别排序: f[i][j]表示前i个a…
因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数   组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008]木棍分割 第一问二分,第二问记$dp[i][j]$为前$i$根砍$j$刀的方案,那么它可以由所有$sum[i]-sum[k]<=ans1$的$k$转移而来,用滚动数组优化空间,用队列的形式优化转移 P1410 子序列 贪心能过(数据水).dp的话,考虑$f[i][j]$表示前面$i$个数的最长上升…
大体思路是先求出来\(f[i]\)代表有至少\(i\)个位置相同的点对数. 然后就已经没什么好害怕的了(跟BZOJ3622一样) 然后这个\(f[i\)]怎么求呢? 最无脑的方法就是枚举位置,然后\(hash\)表记一下每种情况出现多少次然后把\(\sum_{情况个数}{情况次数*(情况次数-1)}\)加到\(f[\)枚举的位置个数\(]\).就行了. 发现这个方法复杂度足以通过此题. #include<iostream> #include<cstring> #include<…
待学的习: https://www.cnblogs.com/xiao-ju-ruo-xjr/p/9149792.html 待写的题: loj#3184:「CEOI2018」斐波那契表示法 luoguP3634: [APIO2012]守卫 hdu5316: Magician luoguP4121: 双面棋盘 loj#6515:「雅礼集训 2018 Day10」贪玩蓝月 bzoj3272: Zgg吃东西 luogu polya模板 luoguP3321: [SDOI2015] 序列统计 bzoj45…