状压dp+矩阵转移,据说正解是dfs出的合法状态,,但难道不是三个for就行了吗2333

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define ll long long
const int ha=1000000007;
using namespace std;
int C[12][12],n,P,Q,cnt;
struct node{
int a[3],full;
}zt[233]; inline int add(int x,int y){
x+=y;
return x>=ha?x-ha:x;
} struct matrix{
int a[199][199]; inline void clear(){
memset(a,0,sizeof(a));
} matrix operator *(const matrix &u)const{
matrix r;
r.clear();
for(int k=1;k<=cnt;k++)
for(int i=1;i<=cnt;i++)
for(int j=1;j<=cnt;j++) r.a[i][j]=add(r.a[i][j],a[i][k]*(ll)u.a[k][j]%ha); return r;
}
}base,ANS; inline void init(){
C[0][0]=1;
for(int i=1;i<=8;i++){
C[i][0]=1;
for(int j=1;j<=i;j++) C[i][j]=add(C[i-1][j-1],C[i-1][j]);
}
} inline void can(int i,int j){
node x=zt[i],y=zt[j];
if(y.a[1]<=x.a[0]&&y.a[2]<=x.a[1]&&x.full+(y.a[1]+y.a[2]==n?1:0)==y.full){
base.a[i][j]=C[x.a[0]][y.a[1]]*(ll)C[x.a[1]][y.a[2]]%ha;
}
} inline void build(){
for(int i=n;i>=0;i--)
for(int j=(P==2?0:n-i);j>=0;j--)
for(int l=0;l<=Q;l++) zt[++cnt]=(node){i,n-i-j,j,l}; base.clear();
for(int i=1;i<=cnt;i++)
for(int j=1;j<=cnt;j++) can(i,j);
} inline void solve(ll y){
ANS.clear();
for(int i=1;i<=cnt;i++) ANS.a[i][i]=1;
int ans=0;
for(;y;y>>=1,base=base*base) if(y&1) ANS=ANS*base;
/*
for(int i=1;i<=cnt;i++){
for(int j=1;j<=cnt;j++) printf("%d ",ANS.a[i][j]);
puts("");
}
*/
for(int i=1;i<=cnt;i++) ans=add(ans,ANS.a[1][i]);
printf("%d\n",ans);
} int main(){
// freopen("line.in","r",stdin);
// freopen("line.out","w",stdout); init();
ll m;
scanf("%d%lld%d%d",&n,&m,&P,&Q);
if(P==1){
puts("1");
return 0;
} build();
solve(m); return 0;
}

  

某考试 T1 line的更多相关文章

  1. 考试T1总结(又CE?!)

    考试T1CE... 最近不适合考试 T1 扶苏是个喜欢一边听古风歌一边写数学题的人,所以这道题其实是五三原题.歌曲中的主人公看着墙边的海棠花,想起当年他其实和自己沿着墙边种了一排海棠,但是如今都已枯萎 ...

  2. 某考试T1 game

    题目背景 无 题目描述 Alice 和 Bob 在一个圆环上玩游戏.圆环上有 n 个位置,按照顺时针顺序 依次标号为 1 到 n.Alice 和 Bob 分别有一个数字集合,集合中都是在 [1, n− ...

  3. 某考试 T1 table

    我们把每一行看成一个多项式 f[i][1] + f[i][2] * x + f[i][3] * x^2 + ..... + f[i][n] * x^(n-1) 的话,一行转移到下一行就相当于乘上一个{ ...

  4. 某考试 T1 arg

    题目描述 给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. 输入格式 第一行两个整数 n, m. 接下来一行 m 个整数, 表示 A. 输出格式 ...

  5. 某考试 T1 lcm

    把lcm写成 (a+n)*(b+n) / gcd(a+n,b+n). 因为gcd可以辗转相减,所以就成了gcd(abs(a-b),a+n),一个常量一个变量之间的gcd,我们可以直接把abs(a-b) ...

  6. 2019.2.25考试T1, 矩阵快速幂加速递推+单位根反演(容斥)

    \(\color{#0066ff}{题解}\) 然后a,b,c通过矩阵加速即可 为什么1出现偶数次3没出现的贡献是上面画绿线的部分呢? 考虑暴力统计这部分贡献,答案为\(\begin{aligned} ...

  7. 2019.2.14 考试T1 FFT

    \(\color{#0066ff}{ 题目描述 }\) 衡水二中的机房里经常有人莫名其妙地犇雷,leizi很生气,决定要找出那个犇雷的人 机房有n个人,每个人都认为机房里有两个人可能会犇雷,其中第i个 ...

  8. 某考试 T1 fair (18.5.1版)

    转化一下模型:每天可以选1也可以选0,但是任意前i天(i<=n)1的个数都必须>=0的个数,求总方案数/2^n. 然后可以发现这是一个经典题,随便推一下公式发现等于  C(n,n/2)/2 ...

  9. 某考试 T1 str

    一开始死磕sam,发现根本没法做...... 后来想了想,反正匹配子串的大部分不是sam就是 二分+hash啊,,,于是就想了想二分+hash,发现好像可以做啊! 就是假设我们要让 s1[1] 映射到 ...

随机推荐

  1. HTML网页的浏览器标题栏显示小图标的方法

    HTML网页的浏览器标题栏显示小图标的方法   就像这种效果,方法其实很简单,就是 在head头部里写: <link rel='icon' href='pic.ico ' type='image ...

  2. C++系统学习之七:类

    类的基本思想是数据抽象和封装. 数据抽象是一种依赖于接口和实现分离的编程技术.类的接口包括用户所能执行的操作:类的实现包括类的数据成员.负责接口实现的函数体以及定义类所需的各种私有函数. 封装实现了类 ...

  3. python:json

    json是用来传输数据的字符串,{"key1":"values1","key2":{"key3":"value ...

  4. mysql函数总结

    MySQL函数 MySQL数据库提供了很多函数包括: 数学函数:字符串函数:日期和时间函数:条件判断函数:系统信息函数:加密函数:格式化函数: 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数 ...

  5. 《C/C++工程师综合练习卷》之小试牛刀

    第一套练习之感受 刚刚注册了牛客网的账号,准备在此衡量一下水平,好好磨练一番.看到推荐练习<C/C++工程师综合练习卷>,oh,20道题,2个小时.由于木有经验,好一番紧张~ 结果用了20 ...

  6. ubuntu 执行apt-get update报错Failed to fetch

    在ubuntu下执行sudo apt-get update时,经常会遇到报错: Err http://security.ubuntu.com precise-security InRelease Er ...

  7. Python中的socket网络编程(TCP/IP,UDP)讲解

    在网络编程中的一个基本组件就是套接字(socket).套接字基本上是两个端点的程序之间的"信息通道".程序可能分布在不同的计算机上,通过套接字互相发送信息.套接字包括两个:服务器套 ...

  8. CentOS下配置LVM和RAID

    1.CentOS配置LVM http://www.cnblogs.com/mchina/p/linux-centos-logical-volume-manager-lvm.html http://ww ...

  9. 如何反馈问题issue?

    如何反馈问题issue? 01,请提交的时候换位思考一下:如果别人给你提交一个这样的 Issue,你能快速准确的理解吗?如果不能,烦请重新整理你的语言,按照要求的格式填写.专业一点,减少不必要的口舌浪 ...

  10. luogu2634 聪聪可可

    点分治裸题 #include <iostream> #include <cstdio> using namespace std; int n, uu, vv, ww, ans, ...