传送门:QAQQAQ

题意:定义矩阵A与矩阵B重复,当且仅当A可以通过任意次行列交换得到B,例如下图A,B即为合法矩阵

现求对于$n*n$的矩阵有多少个不重复的矩阵

数据范围:

对于10%的数据 N≤5;
对于50%的数据 N≤150;
对于100%的数据T≤5 N≤2,000。

思路:这题暴力都不会打啊。。。

既然是行列变换,那么我们就要从行列变换中找到一些不变量。

我们可以把矩阵看成描述一个两边点数均为$n$的二分图的邻接矩阵,那么我们行列交换就相当于把两个点“扭一下”,但图的本质是不会变的。

我们这里定义“本质”是指连通块回路(即从一个点出发开始搜,再次搜回这个点的路径块)的情况,因为无论我们怎么换点,这些连通块的总个数和各自点数都是不会变的。(因为每个点都引出两条边,所以一定有联通块)

所以我们就要构造二分图,使这些二分图的连通块不相同。

因为连通块无序,而且在$2*n$的二分图中构成一个连通块至少要四个点,我们把它简化到一边:一边构成连通块的的点数至少为二

所以题目就转化成了将$n$正整数拆分成若干个大于等于二的自然数,无序,求方案数。

简单吧!可是这种神仙YY题鬼想得到。。。

代码:(因为无序,所以要和完全背包一样先枚举往里面加的数,再枚举总和,可以保证一个数加完以后就不会再被考虑)

#include<bits/stdc++.h>
using namespace std;
const int MOD=; int dp[]; int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(dp,,sizeof(dp));
dp[]=;
for(int i=;i<=n;i++)
{
for(int j=i;j<=n;j++) dp[j]=(dp[j]+dp[j-i])%MOD;
}
cout<<dp[n]<<endl;
}
return ;
}

夏令营501-511NOIP训练18——高三楼的更多相关文章

  1. XJOI 夏令营501-511NOIP训练18 高三楼

    参观完各种饭堂,学校还有什么著名的景点呢?当然是教室了,此时此刻我 们来到了高三楼.你会发现高三楼门口会有以身份认证系统,这东西还有着一段疼人的历史.每年的九月到来,高三的童鞋大多不习惯学校的作息时间 ...

  2. test20190802 夏令营NOIP训练18

    今天的题很有难度啊.然而我10:40才看题-- 高一学堂 在美丽的中山纪念中学里面,有一座高一学堂.所谓山不在高,有仙则名:水不在深,有龙则灵.高一学堂,因为有了yxr,就成了现在这个样子 = =. ...

  3. loj #6261 一个人的高三楼 FFT + 组合数递推

    \(\color{#0066ff}{ 题目描述 }\) 一天的学习快要结束了,高三楼在晚自习的时候恢复了宁静. 不过,\(HSD\) 桑还有一些作业没有完成,他需要在这个晚自习写完.比如这道数学题: ...

  4. BZOJ3028 食物 和 LOJ6261 一个人的高三楼

    总结一下广义二项式定理. 食物 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数 ...

  5. 夏令营501-511NOIP训练18——高二学堂

    传送门:QAQQAQ 题意:给你一个数$n$,把它拆分成至多$k$个正整数,使得这些数的和等于$n$且每一个正整数的个数不能超过$4$ 拆分的顺序是无序的,但取出每一个数方案是不同的(例如我要拆$1$ ...

  6. XJOI夏令营501训练1——分配工作

    传送门:QAQQAQ 题意:某公司有工作人员x1,x2,…,xn ,他们去做工作y1,y2,…,ym(n<=m) ,每个人都能做其中的几项工作,并且对每一项工作都有一个固定的效率.问能否找到一种 ...

  7. XJOI 夏令营501-511NOIP训练18 高二学堂

    在美丽的中山纪念中学中,有座高二学堂,同样也是因为一个人,让它们变 成了现在这个样子~那就是我们伟大的级主任.因为他,我们又迎来了一个木有电影,只有对答案的段考日:又迎来了一个不是大礼拜,而是小礼拜的 ...

  8. loj#6261. 一个人的高三楼(NTT+组合数学)

    题面 传送门 题解 统计\(k\)阶前缀和,方法和这题一样 然后这里\(n\)比较大,那么把之前的柿子改写成 \[s_{j,k}=\sum_{i=1}^ja_i{j-i+k-1\choose j-i} ...

  9. Mysql训练:第二高的薪水(IFNULL,OFFSET,LIMIT)

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...

随机推荐

  1. this.$router.push

    跳转详情页this.$router.push({ path: `/activityDetails/${id}` })

  2. 去sqlserver日志

    USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE DNName SET  ...

  3. protobuf3的学习笔记

    学习protobuf的过程中踩了不少的坑,这篇博文算是一个小结吧! 环境: windows VisualStudio Google.Protobuf.Tools. Google.Protobuf. 其 ...

  4. leetcood学习笔记-172-阶乘后的0

    题目描述: 方法:不断除以 5, 是因为每间隔 5 个数有一个数可以被 5 整除, 然后在这些可被 5 整除的数中, 每间隔 5 个数又有一个可以被 25 整除, 故要再除一次, ... 直到结果为 ...

  5. CSS——外观样式及应用

    CSS注释  CSS规则是使用 /* 需要注释的内容 */ 进行注释的,即在需要注释的内容前使用 “/*” 标记开始注释,在内容的结尾使用 “*/”结束. 例如: p { font-size: 14p ...

  6. 使用CGIHTTPServer搭建简单网站

    目录 一.前提准备 二.搭建web网站 如何快速搭建web网站?这个问题对于我这样的小白来说简直就是一脸懵逼毫无头绪.在学习python的过程接触到了 CGI 编程,至于CGI是什么?怎么运行的?这我 ...

  7. DIV内容超出固定宽度部分用省略号代替

    方法一:CSS控制溢出文本  只针对DIV单行数据展示 /** DIV文本超出宽度部分用...替换,鼠标移上显示全部 **/ .textAuto{overflow:hidden;text-overfl ...

  8. 下面是一段delphi代码,你在c# 中引入api 即可

    procedure TForm1.Button1Click(Sender: TObject);var i:HWND; cs:CREATESTRUCT;begin// i := FindWindowEx ...

  9. NX二次开发-UFUN替换组件UF_ASSEM_use_alternate

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_assem.h> #include <u ...

  10. NX二次开发-UFUN所有对象类型的宏定义

    /**************************************************************************** Copyright (c) 2010 Sie ...