毒瘤计数题2333,(小声)k其实可以出到1e9,不过这样求组合数的时候就要记1000种数的1~1000次下降幂(用到的组合数中第一维在1e9级别的只有1000种左右,第二维都是<=1000),写起来可能比较麻烦。。。。不过既然k只有1e6我们何必要这么毒瘤呢233333

考虑什么样的棋盘是合法的。

发现只有中间的棋盘出现的颜色集合是 最边上两列棋盘出现颜色集合 的交集 的子集  的时候,才合法(考虑扫描线向右移动一列)。

于是我们可以先枚举 交集大小,再枚举边上两列的总颜色数,然后就可以直接用组合数+斯特林数  乘乘乘乘.... 算啦。

以下有几个地方可以优化很大的常数:

1.只和交集大小和k(或者其他常量)有关的组合数或者其他东西,可以在算完总颜色数的答案之和之和再乘上,将减少大量的乘法运算。。。

2.有两个组合数连乘的地方推一推式子发现有一对分子分母可以消去一个阶乘,常数*= (2/3)  [然并卵]

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#define ll long long
using namespace std;
const int N=1005,ha=1e9+7; inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}
inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;} int ksm(int x,int y){
int an=1;
for(;y;y>>=1,x=x*(ll)x%ha) if(y&1) an=an*(ll)x%ha;
return an;
} inline int sq(int x){ return x*(ll)x%ha;} int jc[N*N],ni[N*N],n,m,T,k,ans,S[N][N],num; inline int C(int x,int y){ return jc[x]*(ll)ni[y]%ha*(ll)ni[x-y]%ha;} inline void init(){
jc[0]=1; for(int i=1;i<=1e6;i++) jc[i]=jc[i-1]*(ll)i%ha;
ni[1000000]=ksm(jc[1000000],ha-2);
for(int i=1e6;i;i--) ni[i-1]=ni[i]*(ll)i%ha; S[0][0]=1;
for(int i=1;i<=1000;i++)
for(int j=1;j<=i;j++) S[i][j]=add(S[i-1][j-1],S[i-1][j]*(ll)j%ha);
} inline void solve(){
if(m==1){
for(int i=1;i<=n;i++) ADD(ans,C(k,i)*(ll)S[n][i]%ha*(ll)jc[i]%ha);
return;
} num=n*(m-2); for(int i=0,tmp=0;i<=n;tmp=0,i++){
for(int j=0,u,v;(v=(j<<1)+i)<=k&&(u=i+j)<=n;j++)
ADD(tmp,sq(ni[j])%ha*(ll)ni[k-v]%ha*(ll)sq(S[n][u]*(ll)jc[u]%ha)%ha); ADD(ans,tmp*(ll)C(k,i)%ha*(ll)ksm(i,num)%ha*(ll)jc[k-i]%ha);
}
} int main(){
freopen("color.in","r",stdin);
freopen("color.out","w",stdout); init(); scanf("%d",&T);
while(T--){
ans=0,scanf("%d%d%d",&n,&m,&k);
solve(),printf("%d\n",ans);
} return 0;
}

  

[2018湖南省队集训] 6.28 T2 color的更多相关文章

  1. [2018湖南省队集训] 6.28 T3 simulate

    这道模拟题出的我毫无脾气2333 最重要的是先要发现操作顺序不影响最后的答案,也就是每次随便挑一个>=2的数进行操作最后总是可以得到同样的数列. (这个还不太难想qwq) 但是最骚的是接下来的模 ...

  2. [2018湖南省队集训] 6.24 T1 marshland

    题面在这里! 一开始感觉像一个类似二分图的最小割,于是成功跑偏2333333 很容易发现一个关键性质,'L'的两个角落在的偶数格 的行(或者列)的奇偶性一定不同.... 于是我们再把偶数格按照行(或者 ...

  3. 【考试记录】2018 山东省队集训第一轮D4(雾)

    T1题意: 给你一个$n\times m$的矩阵$B$,求它能由最少多少个形如两个向量之积$(n\times 1)\times(1\times m)$的矩阵相加得到. 题解: 考虑上界,最多需要$mi ...

  4. FJ省队集训最终测试 T2

    思路:发现如果一个人一共选了x个点,那么选中某一个点对的概率都是一样的,一个人选x个点的总方案是C(n,x),一个人选中某个点对的总方案是C(n-2,x-2),这样,那么选中某个点对的概率就是 x*( ...

  5. 湖南省队集训 Day 2

    从这里开始 Problem A 走路 Problem B 游戏 Problem C 有趣的字符串题 暴力分又没骗满sad..... Problem A 走路 $O(n^2)$动态规划是显然的. 更新方 ...

  6. 【欧拉回路+最小生成树】SD开车@山东2018省队一轮集训day1

    目录 [欧拉回路+最小生成树]SD开车@山东2018省队一轮集训day1 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 SOLUTION CODE [欧拉回路+最小生成树]SD开车@ ...

  7. HN2018省队集训

    HN2018省队集训 Day1 今天的题目来自于雅礼的高二学长\(dy0607\). 压缩包下载 密码: 27n7 流水账 震惊!穿着该校校服竟然在四大名校畅通无阻?霸主地位已定? \(7:10\)从 ...

  8. JS省队集训记

    不知不觉省队集训已经结束,离noi也越来越近了呢 论考前实战训练的重要性,让我随便总结一下这几天的考试 Day 1 T1 唉,感觉跟xj测试很像啊?meet in middle,不过这种题不多测是什么 ...

  9. 2018HN省队集训

    HNOI2018省队集训 Day 1 流水账 T1 tree 换根+求\(lca\)+求子树和,一脸bzoj3083遥远的国度的既视感.子树和讨论一下就好了,\(lca\)?也是大力讨论一波. 先写了 ...

随机推荐

  1. 正则表达式实现将html文本转换为纯文本格式(将html字符串转换为纯文本方法)

    Regex regex = new Regex("<.+?>", RegexOptions.IgnoreCase); string strOutput = regex. ...

  2. Spring归纳小结(山东数漫江湖)

    前言 如果说有什么框架是Java程序员必然会学习.使用到的,那么Spring肯定是其中之一.本篇博客,将根据博主在日常工作中对Spring的使用做一个系统的归纳小结. Spring的一些概念和思想 S ...

  3. linux启动过程——(三)

  4. Java中通过方法创建一个http连接并请求(服务器间进行通信)

    服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值. 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package dem ...

  5. 利用keepalive+mysql replication 实现数据库的高可用

    利用keepalive+mysql replication 实现数据库的高可用 http://www.xuchanggang.cn/archives/866.html

  6. 安装icephp 记

    下面开始安装: 一:yum 安装 首先需要添加一个yum源. # vi /etc/yum.repos.d/zeroc-ice-amzn.repo写入: [zeroc-ice]name=Ice 5 fo ...

  7. 如何掌握jQuery插件开发(高能)

    在实际开发工作中,总会碰到像滚动,分页,日历等展示效果的业务需求,对于接触过jQuery以及熟悉jQuery使用的人来说,首先想到的肯定是寻找现有的jQuery插件来满足相应的展示需求.目前页面中常用 ...

  8. 谈谈mybatis逆向工程中的Example类

    参考博客: http://openwares.net/database/mybatis_generator_example.html 一.Example类的作用:一个用于筛选复杂条件的类 二.Exam ...

  9. 过渡&动画

    进入/离开&列表过渡 概述 Vue在插入,更新或者移除Dom时,提供多种不同方式的应用过渡效果.包括以下工具 在css过渡和动画中自动应用class 可以配合使用第三方css动画库,如Anim ...

  10. jdbc连接远程数据库进行操作

    链接远程数据库的时候,要把获得链接的url进行修改 1 package com.test; import java.sql.Connection; import java.sql.DriverMana ...