【CTS2019】珍珠(生成函数)】的更多相关文章

传送门 题目大意:给出一个长度为\(n\)的序列\(a_i\),序列中每一个数可以取\(1\)到\(D\)中的所有数.问共有多少个序列满足:设\(p_i\)表示第\(i\)个数在序列中出现的次数,\(\sum\limits_{i=1}^D \lfloor \frac{p_i}{2} \rfloor \geq m\).\(D \leq 10^5 , 0 \leq m \leq n \leq 10^9\) 在有生之年切掉laofu的多项式题,全场唯一一个写多项式求逆的,其他人都直接卷积,然后发现自己…
[CTS2019]珍珠 考虑实际上,统计多少种染色方案,使得出现次数为奇数的颜色数<=n-2*m 其实看起来很像生成函数了 n很大?感觉生成函数会比较整齐,考虑生成函数能否把n放到数值的位置,而不是维度 有标号,EGF,发现奇偶性有关,其实就是e^x+-e^(-x)这种.(确实很整齐) 所以可以带着e^x化简 如果枚举奇数颜色数,再用两个EGF卷积搞来搞去,很麻烦 memset0 还要转化为路径?(可能上下阶乘很多吧...),这谁想得到 上面的方法之所以麻烦,是因为二项式展开之后存在三个sigm…
题面 CTS2019 珍珠 有 \(n\) 个在 \([1,d]\) 内的整数,求使可以拿出 \(2m\) 个整数凑成 \(m\) 个相等的整数对的方案数. 数据范围:\(0\le m\le 10^9\),\(1\le n\le 10^9\),\(1\le d\le 10^5\). 蒟蒻语 非常巧妙的题,主要要用到二项式反演.指数级生成函数和 NTT. 做个广告,这是我读过最好的生成函数讲解:link. 蒟蒻解 设 \(c_i\) 表示 \(i\) 这个数的出现次数. 设 \(odd=\sum…
[题解]CTS2019珍珠 题目就是要满足这样一个条件\(c_i\)代表出现次数 \[ \sum {[\dfrac {c_i } 2]} \ge 2m \] 显然\(\sum c_i=n\)所以,而且假如\(c_i\)是\(2\)的约数就有正常的贡献,如果不是就有少一点的贡献,那么 \[ \sum^D_{i=1} {[2\mid c_i]} > n-2m \] 设\(f_i\)为钦定有\(i\)种颜色出现偶数次的方案.问题瞬间就变成了HAOI染色... 则有 \[ f_i={D\choose i…
这题72分做法挺显然的(也是我VP的分): 对于n,D<=5000的数据,可以记录f[i][j]表示到第i次随机有j个数字未匹配的方案,直接O(nD)的DP转移即可. 对于D<=300的数据,根据转移系数建立矩阵,跑一遍矩阵快速幂,复杂度O(D3logn),不过要注意卡常数,因为是稀疏矩阵可以判掉无用状态. 对于m较小数据,m=0快速幂,m=1为Dn-A(n,D),m=2暴力讨论一下有没有出现>=1次的值,如果有,唯一出现>=1次的值是出现2次还是3次. 当然还是水平低啊不会正解.…
https://www.luogu.org/blog/user50971/solution-p5401 #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namespace std; ,mod=,i2=; int D,n,m,ans,fac[N],inv[N],ip2[N],f[N],g[N],rev[N],a[N],b[N]; int ksm(…
显然相当于求有不超过n-2m种颜色出现奇数次的方案数.由于相当于是对各种颜色选定出现次数后有序排列,可以考虑EGF. 容易构造出EGF(ex-e-x)/2=Σx2k+1/(2k+1)!,即表示该颜色只能选奇数个.同理有EGF(ex+e-x)/2=Σx2k/(2k)!,即表示该颜色只能选偶数个. 考虑暴力枚举有多少种颜色出现了奇数次.不妨设恰有i种颜色出现了奇数次的方案数为f(i),那么f(i)=n!·C(D,i)·[xn](((ex-e-x)/2)i·((ex+e-x)/2)D-i),答案显然为…
蒟蒻语 这题太玄学了,蒟蒻写篇题解来让之后复习 = = 蒟蒻解 假设第 \(i\) 个颜色有 \(cnt_i\) 个珍珠. \(\sum\limits_{i=1}^{n} \left\lfloor\frac{cnt_i}{2}\right\rfloor \ge m\) \(\sum\limits_{i=1}^{n} cnt_i - cnt_i \mod 2 \ge 2m\) \(n - \sum\limits_{i=1}^{n} cnt_i \mod 2 \ge 2m\) \(\sum\limi…
题面传送门 一道多项式的 hot tea 首先考虑将题目的限制翻译成人话,我们记 \(c_i\) 为 \(i\) 的出现次数,那么题目的限制等价于 \(\sum\limits_{i=1}^D\lfloor\dfrac{c_i}{2}\rfloor\le m\).不难发现这里涉及下取整,稍微有些棘手,因此考虑将这个下取整去掉,显然 \(\lfloor\dfrac{c_i}{2}\rfloor=\dfrac{c_i-c_i\bmod 2}{2}\),故原式可化为 \(\sum\limits_{i=1…
持续更新...纪念一下我的高分暴力...(好丢人啊qwq) NOI2014 动物园 80pts 用倍增暴力跳nxt数组 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define MAXN 1000010 #define MOD 1000000007 #define ull unsigned long long…
[CTS2019]珍珠(生成函数) 题面 LOJ 洛谷 题解 lun题可海星. 首先一个大暴力\(sb\)的\(dp\)是设\(f[i][S]\)表示当前考虑完了前\(i\)个珍珠,\(S\)集合中这些颜色的珍珠当前还有一个没有匹配.这个随便转移就行了. 然后发现并没有任何需要记录下确切的哪些颜色是奇数个,只需要记录有多少种就行了. 这样子可以做到\(O(nd)\). 从这里我们看出,最终能够匹配出来的对数恰好等于\((n-|S|)/2\),总个数减去奇数颜色的个数的一半. 首先如果我们能够知道…
题目链接:洛谷 pb大佬说这是sb题感觉好像有点过fan...(我还是太弱了) 首先,设$i$这个数在序列中出现$a_i$次,要求$\sum_{i=1}^D[a_i \ mod \ 2]\leq n-2m$ 如果要直接计算$\leq n-2m$的数量会非常麻烦,所以考虑设$g_i$表示恰好出现$i$个奇数的方案之和. 这样也还是太麻烦,我们考虑使用反演或容斥通过$\geq i$的数量推算出恰好等于$i$的数量,假设$f_i$表示出现$i$个奇数的方案数. 因为这是数的排列问题,所以考虑使用指数型…
Description Solution 有一个直观的思路是考虑每种颜色个数的奇偶性,奇数个数的颜色不能超过\(n-2m\) 因此若\(n-2m\geq D\)则答案一定是\(D^n\) 否则由于每种颜色其实没有区别,我们考虑一种颜色为奇数和为偶数的指数型生成函数 奇数是\(e^x-e^{-x}\over 2\),偶数是\(e^x+e^{-x}\over 2\) 我们枚举有多少个奇数的颜色 容易得到 \[Ans=n!\sum\limits_{i=0}^{n-2m}{D\choose i}\lef…
传送门 思路 非常显然,就是要统计有多少种方式使得奇数的个数不超过\(n-2m\).(考场上这个都没想到真是身败名裂了--) 考虑直接减去钦点\(n-2m+1\)个奇数之后的方案数,但显然这样会算重,所以考虑容斥. 设\(f_k\)表示至少有\(k\)个为奇数的方案数. 那么有 \[ \begin{align*} f_k&={D\choose k}{n!}[x^n](\frac{e^x-e^{-x}}{2})^k e^{(D-k)x}\\ &={D\choose k}\frac{1}{2^…
分析 容易发现\(D \leq n - 2m\)时,任意数列都满足要求,直接判掉,下文所讨论的均为\(D > n - 2m\)的情况. 考虑把两个数列合并,显然可以认为是两个带标号对象的合并,可以使用EGF相乘. 我们可以枚举有\(k\)个数出现了奇数次,答案即为: \[ \begin{aligned} ans=&n!\sum_{k=0}^{n-2m}(EVEN(x)+yODD(x))^D[x^n][y^k]\\ =&n!\sum_{k=0}^{n-2m}(\frac{e^x+e^{…
「CTS2019」珍珠 解题思路 看了好多博客才会,问题即要求有多少种方案满足数量为奇数的变量数 \(\leq n-2m\).考虑容斥,令 \(F(k)\) 为恰好有 \(n\) 个变量数量为奇数的方案数,\(G(k)\) 为钦点了 \(k\) 种变量的选法且它们数量都是奇数,剩下的变量随便组合的方案数. 那么, \[ Ans = \sum_{i=0}^{\min(n-2m,D)} F(i) \] 显然 \(F, G​\) 之间满足以下关系: \[ G(k) =\sum_{i=k}^D {i\c…
题目传送门:LOJ #3120. 题意简述: 称一个长度为 \(n\),元素取值为 \([1,D]\) 的整数序列是合法的,当且仅当其中能够选出至少 \(m\) 对相同元素(不能重复选出元素). 问合法序列个数. 题解: 设颜色为 \(c\) 的珍珠的个数为 \(\mathrm{cnt}_c\),则一个方案合法当且仅当: \[\begin{aligned}\sum_{c=1}^{D}\left\lfloor\frac{\mathrm{cnt}_c}{2}\right\rfloor&\ge m\\…
题目 ​ $laofu $出的题 ​ \(n\)个离散型随机变量\(X_i\)可能的值为\([1,D]\) ,求有至少\(m\)对的概率 ​ $0 \le m \le 10^9  ,  1 \le n \le 10^9  ,  1 \le D \le 10^5 $ 题解 60 pts 观察到能配对的个数只和颜色奇数个数有关 令\(L=min(D,n-2m)\),这是奇数个数上界 \(dp_i,j\)表示前\(i\)个球,奇数个数为\(j\)的方案 复杂度:\(O(Dn)\) 如果用快速幂转移加上…
link .... 感觉自己太颓废了....还是来更题解吧...[话说写博客会不会涨 rp 啊 qaq ? 题意: 有 n 个物品,每个都有一个 [1,D] 中随机的颜色,相同颜色的两个物品可以配对.现在要求至少能配 m 对,问方案数? $n,m\leq 10^9,D\leq 10^5$ 题解: 配对数量 $\geq m \Longleftrightarrow$ 出现奇数次的权值个数 $\leq n-2m$ . 一个权值出现偶数次的生成函数: $\frac{e^x +e^{-x}}{2}$ 一个…
LOJ3120 52pts \(N - D >= 2M\)或者\(M = 0\)那么就是\(D^{N}\) 只和数字的奇偶性有关,如果有k个奇数,那么必须满足\(N - k >= 2M\) 所以设\(f[i][j]\)表示第\(i\)个数有\(j\)个奇数的方案数,\(j\cdot f[i][j] \rightarrow f[i + 1][j - 1]\)和\((D - j) \cdot f[i][j] \rightarrow f[i + 1][j + 1]\) 64pts 这个只需要把上面的…
题目   luogu. 题解   先 % 兔.同为兔子为什么小粉兔辣么强qwq. 本文大体跟随小粉兔的题解的思路,并为像我一样多项式超 poor 的读者作了很详细的解释.如果题解界面公式出现问题,可以尝试"在 Ta 的博客查看"w~   生成函数 + NTT.   首先,转化题意:求长度为 \(n\),元素属于 \([1,D]\) 且存在至少 \(m\) 对位置不重复的相同元素的整数序列个数.   不妨把元素的值形象化为颜色,设第 \(c\) 中颜色在某个序列中出现次数为 \(cnt_…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有 \(n\) 个在范围 \([1, D]\) 内的整数均匀随机变量. 求至少能选出 \(m\) 个瓶子,使得存在一种方案,选择一些变量,并把选出来的每一个变量放到一个瓶子中,满足每个瓶子都恰好装两个值相同的变量的概率. 请输出概率乘上 \(D^n\) 后对 \(998244353\) 取模的值. 原题传送门. @solution@ 记 \(l = \min\{…
题目描述 有n颗形状和大小都一致的珍珠,它们的重量都不相同.n为整数,所有的珍珠从1到n编号.你的任务是发现哪颗珍珠的重量刚好处于正中间,即在所有珍珠的重量中,该珍珠的重量列(n+1)/2位.下面给出将一对珍珠进行比较的办法:给你一架天平用来比较珍珠的重量,我们可以比出两个珍珠哪个更重一些,在作出一系列的比较后,我们可以将某些肯定不具备中间重量的珍珠拿走. 例如,下列给出对5颗珍珠进行四次比较的情况: 1.珍珠2比珍珠1重 2.珍珠4比珍珠3重 3.珍珠5比珍珠1重 4.珍珠4比珍珠2重 根据以…
题目大意: 两个人玩取数游戏,第一个人分数一开始是a,第二个分数一开始是b,接下来t轮,每轮两人都选择一个[-k,k]范围内的整数,加到自己的分数里,求有多少种情况使得t轮结束后a的分数比b高.  (1 ≤ a, b ≤ 100, 1 ≤ k ≤ 1000, 1 ≤ t ≤ 100) 1.我一开始的想法是DP出玩i轮得分是j的方案数.然后状态数最多有t*(2*k*t)那么多,最坏情况下会有2e7那么多的状态,转移必须是O(1)的. dp[i][j]=sum(dp[i-1][j-k....j+k]…
题意:给n种房子,每种房子有一个值val和个数cnt,现在要把这些房子分成两部分,争取两部分总值相等,如果不能相等,让A>B,且A-B最小. 解法:先跑一次生成函数,c[n]表示组成总值为n的方法种数,然后从Total/2~0枚举B的总值,如果c[i]不为0,说明可以达到 i 这个状态,说明这就是B的最接近A的值(因为最接近Total/2).算法复杂度较高.跑了1600多ms,不知道还有没有更优的算法. 代码: #include <iostream> #include <cstdi…
这题跟上两题也差不多. 把150以内的素数找出来,把素数的值看做硬币的面值,每个硬币的个数即ceil(150/prime[i]),因为再多也没用,最多组成n=150就行了,所以又回到了找硬币问题.用生成函数解之. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std…
生成函数题. 题意:有币值1,2,5的硬币若干,问你最小的不能组成的币值为多少. 解法:写出生成函数: 然后求每项的系数即可. 因为三种硬币最多1000枚,1*1000+2*1000+5*1000=8000,那么多项式乘积的最高次数为8000 用c保存累计相乘各项的系数,tc保存c和当前项相乘的系数 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> us…
首先 1+x+x^2+x^3+...+x^∞=1/(1-x) 对于题目中的几种食物写出生成函数 (对于a*x^b , a表示方案数 x表示食物,b表示该种食物的个数) f(1)=1+x^2+x^4+...+x^∞=1/(1-x^2) f(2)=1+x f(3)=1+x+x^2 f(4)=x+x^3+x^5+...+x^∞=x/(1-x^2) f(5)=1+x^4+x^8+...+x^∞=1/(1-x^4) f(6)=1+x+x^2+x^3 f(7)=1+x f(8)=1+x^3+x^6+...+…
C# 条形码 生成函数 (Code 128 标准参考:GB/T 18347-2001) 最近在做单据打印,发现客户要求用到条形码,在网上找了,发现只有一些条形码的标准,但打出来发现根本不能扫,还要加某些字体.   以下代码经过实际扫描测试~!        /// <summary>       /// 生成条形码( 128条码,标准参考:GB/T 18347-2001 )       /// BY JUNSON 20090508       /// </summary>     …
问题提出自项目中的老代码:一个Bill表,存储所有的表单信息,比如:员工入职单,离职单等等.(别喷,我知道要分多个表.但领导的意愿你是没办法违背的)表单的单据号是以四个字母+年月日+数字顺序号来表示.每次取新单据号时要从Bill表里(按生成规则)查询出最大的那个单据号,再拆分出来,再给顺序号加1,组合好后再写回.哈哈这就是老代码. 随着软件行业的进步,各种技巧层出不穷.而针对顺序号生成的方法也有好巨大改进. [Oracle]仿Oracle Sequence的自定义年份Sequence(适合任何数…