XJOI 夏令营501-511NOIP训练18 高三楼
参观完各种饭堂,学校还有什么著名的景点呢?当然是教室了,此时此刻我
们来到了高三楼。你会发现高三楼门口会有以身份认证系统,这东西还有着一段
疼人的历史。
每年的九月到来,高三的童鞋大多不习惯学校的作息时间,有人迟到的情况
在所难免,2013 届的moreD 同志作为当年的纪检部部长,创造了一种十分厉
害的身份认证系统。他会给每位童鞋的饭卡加上一个电子认证信息:一个n*n
的矩阵,其中,每行每列都有两个特殊的点。moreD 同志设计的身份认证系统
会把这些矩阵读进来,并且对此进行解析,由于每个同学都带有独特的矩阵,系
统就可以在0.00001s 内认证出童鞋的身份。这样迟到的童鞋被登记的速度就会
加快(刷卡嘛),大家上课的时间就不会耽误了,简单、快捷、方便统计。这一
切都要感谢moreD 神牛。
但是,有一个IQ 超高的,经常迟到的童鞋,为了不扣分,他破解了moreD
的身份认证系统,并对自己的认证信息做了更改。moreD 得知这个消息后立即
对此等不良bug 进行改进。
他发现对于一些矩阵,只要把与之“重复”的矩阵取出,假身份认证信息的制造
率会降低很多。
“重复”的定义为矩阵a,通过任意次行列变换,变成了矩阵b,矩阵a,b
就视为重复。
例如:对于3*3 的矩阵,其中矩阵a 与矩阵b 被视为“重复”矩阵。
moreD 想知道对于一个n,可以有多少种不“重复”的矩阵,来填写不同
学生的信息,moreD 忙着更改身份认证系统,这个艰巨的任务就交给你了,你只
需要输出答案mod 100000007 的值就可以了,因为高一的学生可没有这么多。
输入格式:
第一行,一个整数t,表示数据组数。
接下来t 行,每行一个整数n,表示一组数据。
输出格式:
T 行,每行一个整数,表示方案数。由于答案可能很大,只需要输出方案数
mod 100,000,007 的值就可以了。
样例输入:
3
2
3
4
样例输出:
1
1
2
数据范围:
对于10%的数据 N≤5;
对于50%的数据 N≤150;
对于100%的数据T≤5 N≤2,000。
时间限制:
1S
空间限制:
256M
图论+数论+DP
比赛时暴力打表过了10分
那么先推结论
对于原来矩形上每一行每一列,分别看作一个点
那么对于矩形上的点,在对应的行和列的点连一条边
那么得到的图为一个二分图,点数为$2*n$,边数为$2*n$
因为矩形可以进行行列变化,那么答案就是这种二分图,在本质上不同的图的个数
而本质不同的二分图是不能通过交换列集或行集中的点,且不改变边的连接方式由其他二分图得到的


如上图,这两个二分图是本质相同的
那么可以发现如果两个二分图只要联通块的大小和个数不同那么它们就一定是本质不同的
而题目中保证每一行每一列必须有2个点
那么二分图中最小的联通块应该是2
那么最终的答案就是将n正整数拆分(正整数要大于等于2)的方案数
DP即可,枚举之前的数拆分方案累加即可
#include <bits/stdc++.h>
#define mod 100000007
using namespace std;
int t,n,dp[2100];
int main()
{
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
memset(dp,0,sizeof(dp));
dp[0]=1;
for (int i=2;i<=n;i++)
{
for (int j=i;j<=n;j++)
{
dp[j]=(dp[j]+dp[j-i])%mod;
}
}
printf("%d\n",dp[n]);
}
}
XJOI 夏令营501-511NOIP训练18 高三楼的更多相关文章
- 夏令营501-511NOIP训练18——高三楼
传送门:QAQQAQ 题意:定义矩阵A与矩阵B重复,当且仅当A可以通过任意次行列交换得到B,例如下图A,B即为合法矩阵 现求对于$n*n$的矩阵有多少个不重复的矩阵 数据范围: 对于10%的数据 N≤ ...
- XJOI夏令营501训练1——分配工作
传送门:QAQQAQ 题意:某公司有工作人员x1,x2,…,xn ,他们去做工作y1,y2,…,ym(n<=m) ,每个人都能做其中的几项工作,并且对每一项工作都有一个固定的效率.问能否找到一种 ...
- test20190802 夏令营NOIP训练18
今天的题很有难度啊.然而我10:40才看题-- 高一学堂 在美丽的中山纪念中学里面,有一座高一学堂.所谓山不在高,有仙则名:水不在深,有龙则灵.高一学堂,因为有了yxr,就成了现在这个样子 = =. ...
- loj #6261 一个人的高三楼 FFT + 组合数递推
\(\color{#0066ff}{ 题目描述 }\) 一天的学习快要结束了,高三楼在晚自习的时候恢复了宁静. 不过,\(HSD\) 桑还有一些作业没有完成,他需要在这个晚自习写完.比如这道数学题: ...
- BZOJ3028 食物 和 LOJ6261 一个人的高三楼
总结一下广义二项式定理. 食物 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数 ...
- XJOI 夏令营501-511NOIP训练18 高二学堂
在美丽的中山纪念中学中,有座高二学堂,同样也是因为一个人,让它们变 成了现在这个样子~那就是我们伟大的级主任.因为他,我们又迎来了一个木有电影,只有对答案的段考日:又迎来了一个不是大礼拜,而是小礼拜的 ...
- 夏令营501-511NOIP训练18——高二学堂
传送门:QAQQAQ 题意:给你一个数$n$,把它拆分成至多$k$个正整数,使得这些数的和等于$n$且每一个正整数的个数不能超过$4$ 拆分的顺序是无序的,但取出每一个数方案是不同的(例如我要拆$1$ ...
- XJOI夏令营501-511NOIP训练14——好朋友
传送门:QAQQAQ 题意:noip2011就要来了,W校的同学们不仅看重这次比赛,更看重noip2011和谁住在同一个房间.同学之间的关系好坏可以用一个亲密值表示,亲密值越大,两个同学关系越好.小A ...
- XJOI 夏令营501-511NOIP训练17 蛇形数阵
话说小X在孩提时,都会做标准的蛇形矩阵了,发现很好玩.现在的小X很想对其进行改版,变为如下类型的一个无限大蛇形数阵:令S(x)表示以1为左上角,x为右下角的矩形内所有数之和.例如S(12)就是具有深色 ...
随机推荐
- 《C++ primer plus》第5章练习题
1.输入两个整数,输出两个整数之间所有整数的和,包括两个整数. #include<iostream> using namespace std; int main() { int num1, ...
- P5858 「SWTR-03」Golden Sword
题面: Link 题面有点长,不想粘了,QAQ. 题解: 一句话题意,你有 \(n\) 件物品需要依次放进去,每个物品放进去之后会得到一定的权值,为当前锅炉里面的物品的数量乘以 \(a_i\) 每次在 ...
- 对NETIF_F_GSO的一些理解
看linux内核协议栈的时候看到tcp_sendmsg函数,看起来并不难理解,但是申请skb的时候主buff大小让我很困惑.我以前一直以为会根据sack/ip option/pmtu等计算一个mss, ...
- Linux系统安装JDK1.8
2020最新Linux系统发行版ContOS7演示安装JDK. 为防止操作权限不足,建议切换root用户,当然如果你对Linux命令熟悉,能够自主完成权限更新操作,可以不考虑此推荐. 更多命令学习推荐 ...
- c# 误区系列(一)
前言 整理很早以前认为的一些误区,准备整理一个系列.新手可以看下,然后大佬指点一下是否哪些地方错了. 正文 值类型存在栈上,引用类型存在堆上 很多人认为用这句话来解释值类型和栈类型的区别,甚至有些文章 ...
- 【C语言教程】“双向循环链表”学习总结和C语言代码实现!
双向循环链表 定义 双向循环链表和它名字的表意一样,就是把双向链表的两头连接,使其成为了一个环状链表.只需要将表中最后一个节点的next指针指向头节点,头节点的prior指针指向尾节点,链表就能成环儿 ...
- go正则贴吧
package main import ( "fmt" "io/ioutil" "net/http" "regexp" ...
- rabbitmq之后台管理和用户设置
前言 前面介绍了erlang环境的安装和rabbitmq环境安装,接下来介绍rabbitmq的web管理和用户设置. 启用后台管理插件 通过后台管理插件我们可以动态监控mq的流量,创建用户,队列等. ...
- matplotlib直方图
import matplotlib.pyplot as plt import matplotlib as mpl from matplotlib.font_manager import FontPro ...
- 正则匹配img标签 蜘蛛 爬取分析 新闻采集
string ostr = "aaaaaa<img asddsa src=\"\" asddsasd />aaaaaaa<img src=\" ...