【题解】Killer Names($O(n\log n)$做法)
【题解】Killer Names(\(O(n\log n)\)做法)
感觉好久没做过这种直来直去的组合题,过来水一篇题解。还以为要写一个\(MTT\)或者三模数\(NTT\),想了想HDU这种老年机子还是算了,最后发现\(O(n^2)\)就行了
题意翻译过后就是要求一个式子:
\]
钦定两边分别出现\(i,j({m\choose i}{m-i\choose j})\)种不同的颜色,然后再随意分布\(({n\brace i}{n\brace j}i!j!)\)
感觉这很可以卷积一下,但是我们这里是小于号咋办
假设大家都会母函数和NTT和卷积,
设
\\
G(x)=\sum_{i=0}^mg_ix^i
\]
那么这个式子可以化成
\]
就构造了一个小于号出来。好我们来拆这个式子
拆出来后是这样的
\]
你以为不能拆?但是!!!!!!别忘了\(g_i\)是等于号啊,所以\(i+j=m\),所以\((m-i-j)!=1\),因此继续化简,这样我们就可以卷积了。
\]
我们不需要多项式球逆,只需要\(O(n)\)构造\(1\over 1-x\)就行,NTT求一行斯特林数也是\(O(n\log n)\)所以复杂度\(O(n\log n)\)
而且还可以加强一下,比如两边名字长度不同之类的...必须用至少\(k\)个不同的字母之类的...
但是这里模数居然不是清真的\(998244353\),所以你得写三模数NTT再CRT合并!!那对不起我赶时间还是写\(O(n^2)\)算这个式子...
//@winlere
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; typedef long long ll;
inline int qr(){
register int ret=0,f=0;
register char c=getchar();
while(c<48||c>57)f|=c==45,c=getchar();
while(c>=48&&c<=57) ret=ret*10+c-48,c=getchar();
return f?-ret:ret;
}
const int maxn=2e3+1;
const int mod=1e9+7;
int s[maxn][maxn];
int jc[maxn],inv[maxn];
inline int ksm(const int&ba,const int&p){
register int ret=1;
for(register int t=p,b=ba%mod;t;t>>=1,b=1ll*b*b%mod) if(t&1) ret=1ll*ret*b%mod;
return ret;
}
inline void pre(const int&n){
s[0][0]=1;
for(register int t=1;t<=n;++t)
for(register int i=1;i<=n;++i)
s[t][i]=(1ll*s[t-1][i]*i%mod+s[t-1][i-1])%mod;
inv[0]=jc[0]=1;
for(register int t=1;t<=n;++t) jc[t]=1ll*jc[t-1]*t%mod;
inv[n]=ksm(jc[n],mod-2);
for(register int t=n-1;t;--t) inv[t]=1ll*inv[t+1]*(t+1)%mod;
}
inline int c(const int&n,const int&m){
if(n<m) return 0;
return 1ll*jc[n]*inv[m]%mod*inv[n-m]%mod;
}
int n,m;
int main(){
pre(2e3);
int T=qr();
while(T--){
n=qr(); m=qr(); int ans=0,ed=min(n,m); int*S=s[n];
for(register int t=1;t<=ed;++t)
for(register int i=1;t+i<=m&&i<=n;++i)
ans=(ans+1ll*c(m,t)*c(m-t,i)%mod*S[t]%mod*S[i]%mod*jc[t]%mod*jc[i]%mod)%mod;
printf("%d\n",ans);
}
return 0;
}
【题解】Killer Names($O(n\log n)$做法)的更多相关文章
- HDU 6143 Killer Names
Killer Names Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- LeetCode subarray-sum-equals-k题解 前缀和+Hash表+枚举——线性做法
文章目录 题意 思路 连续子数组的和sum[i,j] 源码 结果记录 题意 给定一个数组,求连续的子数组的和为k的子数组个数. 思路 连续子数组的和sum[i,j] sum[i,j]=∑k=ijAk( ...
- LGP4216题解
这是一种题解没有的 \(O(m\log n)\) 做法. 首先第一步转化.设这是第 \(x\) 个任务,若 \(opt\) 为 \(1\),危险值大于 \(c\) 的只有可能在第 \(x-c-1\) ...
- GDOI2018游记&题解
day0 第一件事当然是去酒店入住+领一堆东西. 感觉酒店不错,而且离学校挺近的,走路10分钟不到,骑车5分钟就到了. 然后去学校吃饭.我们在教工饭堂吃饭,饭菜还不错,但是没有筷子差评. 吃完饭后找了 ...
- SDOI2017 Round2 详细题解
这套题实在是太神仙了..做了我好久...好多题都是去搜题解才会的 TAT. 剩的那道题先咕着,如果省选没有退役就来填吧. 「SDOI2017」龙与地下城 题意 丢 \(Y\) 次骰子,骰子有 \(X\ ...
- HAOI2015 简要题解
「HAOI2015」树上染色 题意 有一棵点数为 \(N\) 的树,树边有边权.给你一个在 \(0 \sim N\) 之内的正整数 \(K\),你要在这棵树中选择 \(K\) 个点,将其染成黑色,并将 ...
- Codeforces Round #483 (Div. 1) 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. 为了证明一下我又来更新了,写一篇简要的题解吧. 这场比赛好像有点神奇,E题莫名是道原题,导致有很多选手直接过掉了(Claris 表演24s过题 ...
- IOI2019题解
由于太懒了,好久没更新了.发个题解好了. shoes 首先不难证明鞋子配对一定是从前往后将同一种的左和右配对. 配好对之后首先我们可以假设左在右的左边,然后讨论可知将左边靠前的排在前面更优. rect ...
- CSP-S 模拟测试92 题解
话说我怎么觉得我没咕多长时间啊,怎么就又落了20多场题解啊 T1 array: 根据题意不难列出二元一次方程,于是可以用exgcd求解,然而还有一个限制条件就是$abs(x)+abs(y)$最小,这好 ...
随机推荐
- How to use AutoMapper
http://docs.automapper.org/en/stable/Getting-started.html IMappingExpression<TSource, TDestinatio ...
- linux centos 一键安装环境
phpStudy for Linux 支持Apache/Nginx/Tengine/Lighttpd, 支持php5.2/5.3/5.4/5.5切换 已经在centos-6.5,debian-7.4. ...
- @雅礼集训01/06 - T3@ math
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给出 n, m, x,你需要求出下列式子的值: \[\sum_{ ...
- OpenResty,X-WAF防火墙相关
>>OpenResty<< >>Lua教程<< >>反向代理百度百科<< >>X-WAF配置指南<<
- em&rem
PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem px像素(Pi ...
- jieba完整文档
jieba “结巴”中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") Chinese tex ...
- Logback设置SQL参数打印
一.hibernate中设置SQL参数打印: (主要是第一句) <logger name="org.hibernate.type.descriptor.sql.BasicBinder& ...
- Codeforces Round #170 (Div. 1 + Div. 2)
A. Circle Line 考虑环上的最短距离. B. New Problem \(n\) 个串建后缀自动机. 找的时候bfs一下即可. C. Learning Languages 并查集维护可以沟 ...
- 条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)
声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了 ...
- thinkphp3.2.3中设置路由,优化url
需求: 访问这个目录的时候,http://xx.com/p-412313要重定向到(暂且这么叫)http://xx.com/Home/Blog/index/id/412313 就是看着好看 我的应用目 ...