CH:舞伴

舞伴

Description

N个女生和N个男生要一起跳舞, 每个人都只和自己认识的人跳舞, 给出他们的关系网, 求配对方案数对520520520取模.

Input

第一行一个数 N

2~N+1行, 每行N个数. 第i行第j个数为1表示男生i和女生j互相认识, 为0表示不认识

Output

一行表示方案数对520520520取模

Sample Input

3
1 1 1
1 1 1
1 1 1

Sample Output

6

Hint

50%, 1 <= N <= 9
100%, 1 <= N <= 20

------------------------------------------------------------------此乃警戒线----------------------------------------------------------------------------

=>1.首先a[i][j]表示是第几个人和第几个人是朋友。

=>2.然后d[i][j]表示第i个人的状态,没错就是状态。初始条件是d[n][1<<n-1];意思是原来的状态是每一个女生都是可用的(。。。)。

=>3.接着就是看如果某个女生是否是可用的  if(a[x][i]&&(s&(1<<i)) ps:s=111111101,1<<i=1000000,这个妹子还没有被把走你就可以扛回家了。

=>4.最后累加每一个状态的结果就ok了。

=>5.注意设置边界条件,不然会乱了。

=>6.边界条件的设定原因是有可能最后并不能凑成n对舞伴,如果最后一位时恰好能凑成n对舞伴的话,就将ans+1,否则的将这种方法费掉即可,和深搜的原理是一样的。

=>7.位运算符的优先级非常非常的低,所以注意括号要加。

---------------------------------------------------------------------------------------------完了---------------------------------------------------------------------------------------------------

时间: 2024-11-09 19:50:46

CH:舞伴的相关文章

舞伴问题(1027)

p { margin-bottom: 0.25cm; line-height: 120% } 描述 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队.跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴.若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲.要求编写程序实现舞伴问题. input 输入一共5行, 第一行是男生人数m: 第二行依次是男生的姓名: 第三行是女士的人数n: 第四行依次是女士的姓名: 第五行是跳舞的轮数. output 配对的男士和女士的姓名. 样例输入

CH Round #17 舞动的夜晚

舞动的夜晚 CH Round #17 描述 L公司和H公司举办了一次联谊晚会.晚会上,L公司的N位员工和H公司的M位员工打算进行一场交际舞.在这些领导中,一些L公司的员工和H公司的员工之间是互相认识的,这样的认识关系一共有T对.舞会上,每位员工会尝试选择一名Ta认识的对方公司的员工作为舞伴,并且每位员工至多跳一支舞.完成的交际舞的数量越多,晚会的气氛就越热烈.顾及到晚会的气氛,员工们希望知道,哪些员工之间如果进行了交际舞,就会使整场晚会能够完成的交际舞的最大数量减小. 输入格式 第一行三个整数N

Ch’s gift

Ch’s gift Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Description Mr. Cui is working off-campus and he misses his girl friend very much. After a whole night tossing and turning, he decides to get to his

CH Round #52 还教室[线段树 方差]

还教室 CH Round #52 - Thinking Bear #1 (NOIP模拟赛) [引子]还记得 NOIP 2012 提高组 Day2 中的借教室吗?时光飞逝,光阴荏苒,两年过去了,曾经借教室的同学们纷纷归还自己当初租借的教室.请你来解决类似于借教室的另一个问题.[问题描述]在接受借教室请求的 n 天中,第 i 天剩余的教室为 a i 个.作为大学借教室服务的负责人,你需要完成如下三种操作共 m 次:① 第 l 天到第 r 天,每天被归还 d 个教室.② 询问第 l 天到第 r 天教室

CH Round #56 - 国庆节欢乐赛解题报告

最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树,其中一些树上结有能够产生能量的魔力水果.已知每个水果的位置(Xi,Yi)以及它能提供的能量Ci.然而,魔幻森林在某些时候会发生变化:(1) 有两行树交换了位置.(2) 有两列树交换了位置.当然,树上结有的水果也跟随着树一起移动.不过,只有当两行(列)包含的魔力水果数都大于0,或者两行(列)都没有魔

Ch/CINT — C/C++语言脚本解释器

1.CH Ch是一个跨平台的C/C++脚本解释器,它支持ISO的C语言标准(C90/C99),C++,附带了8000多个函数库并支持众多的工业标准,支持POSIX, socket/Winsock, X11/Motif, OpenGL, ODBC, C LAPACK, GTK+, Win32, XML, 和CGI等等.Ch具有MATLAB的高级数值计算和绘图的功能,且具有良好的交互性,在C/C++语言编程学习方面尤为好用(试试就知道了).Ch也是一个可嵌入的脚本引擎,可以无缝地嵌入到自己的程序中.

《Code Complete》ch.23 调试

WHAT? 调试——发现错误的一种手段 WHY? 相对于不善于调试的程序员,善于调试的程序员只需要前者1/20的时间就可以找出问题所在 HOW? 科学的调试方法 把错误的发生稳定下来:假设-证实/证伪 确定错误原因:二分法 同他人讨论问题 忏悔式调试 抛开问题,休息一下 修正问题 动手之前先要理解问题 理解程序本身,而不仅仅是问题 验证对错误的分析 放松一下 治本,而不是治标 修改代码时一定要有正确的理由:不要随机地修改代码,在没有理解代码时对她做的改动越大,你对她能正确工作的信息就越低 检查自

《Code Complete》ch.11 变量名的力量

What? 如何给变量命名 Why? 易读(你三个月前的代码=别人的代码),易记,恰如其分 整齐的命名具有美感,强迫症患者居家旅行杀人放火之必备 How? 以问题为导向 好名字反映的是问题(what),并非解决方案(how).名字不应体现计算细节 // good Object studentData; int sum; // bad Object inputData; int calcValue; 控制变量名长度 合适的变量名长度为10-16个字符 较长的名字适用于少用到的全局变量,较短的名字适

CH Round #30 摆花[矩阵乘法]

摆花 CH Round #30 - 清明欢乐赛 背景及描述 艺术馆门前将摆出许多花,一共有n个位置排成一排,每个位置可以摆花也可以不摆花.有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看了.假定每种花数量无限,求摆花的方案数. 输入格式 输入有1+m行,第一行有两个用空格隔开的正整数n.m,m表示花的种类数.接下来的m行,每行有m个字符1或0,若第i行第j列为1,则表示第i种花和第j种花不能排在相邻的位置,输入保证对称.(提示:同一种花可能不能排在相邻位置). 输出格式 输出只有一