模拟赛01 T3 盖房子
题面
http://zhengruioi.com/problem/248
题解
三重容斥(说是两重也行吧)
我们来看题目的约束
①有k个位置不能放(k≤8)
②每行每列至少一个
③正负对角线至少一个
④正好放n个
首先对于约束① 我们用$2^k$的容斥 也就是枚举$2^k$种放的方式,算出来之后加加减减就行了
对于约束③ 我们枚举每条对角线能不能放 然后solve(1,1)-solve(1,0)-solve(0,1)+solve(0,0)就是答案 1表示能放,0表示不能放
然后问题变成了
在一个格子图上,有$k$个点已经放上房子$(1 \leq k \leq 8)$,主对角线和副对角线有一些不能放房子,问每行每列正好放一个,一共放$n$个房子的方案数
我们把已经放上格子的去掉,并且把那一行和那一列都去掉,这样对角线可能会变成扭曲的形状,但是就没有了已经放上房子的条件
然后我们把行列交换 因为无论怎么交换一整行或者一整列,都不影响答案 交换之后我们使得主对角线和副对角线上相互影响的格子放到一起
例子:

我们这样做:
先不删格子 然后把第n行放到第一行下面,第n-1行放到第二行下面……
然后把第n列放到第一列右边,第n-1列放到第二列右边……
这样我们可以把互相影响的四个格子并起来 变成从左上角到右下角一堆2*2的格子 可能加上一个单独的格子(n为奇数)
然后再删格子
我们用f[i][j]表示当前考虑到第i个“格子的并”,当前放了j个房子,然后看第i个“格子的并”能放几个房子(0~2个),更新答案
然后我们就得到$f[cnt][k]*A_{m-k}^{n-k}$表示在这个图里,假设n<=m,对角线上放k个房子的方案数
这样再加一加,算一算就得到了答案
模拟赛01 T3 盖房子的更多相关文章
- 洛谷noip 模拟赛 day1 T3
T7983 大芳的逆行板载 题目背景 大芳有一个不太好的习惯:在车里养青蛙.青蛙在一个n厘米(11n毫米s)的Van♂杆子上跳来跳去.她时常盯着青蛙看,以至于突然逆行不得不开始躲交叉弹.有一天他突发奇 ...
- 「2018-12-02模拟赛」T3 约束排列 解题报告
3.约束排列(place.pas/cpp/in/out) 问题描述: 给出 n 个互不相同的小写字母,表示出现的字符类型,以及 k 个约束关系: .....,表示 ai 必须出现在 bi 前面(ai, ...
- 雅礼 noip2018 模拟赛 day3 T3
典型树形dp 这里,我们应该看到一些基本性质: ①:如果这个边不能改(不是没有必要改),我们就不改,因为就算改过去还要改回来,显然不是最优的 注意:"不能改"是指边的性质和要求的相 ...
- war2 洛谷模拟赛day2 t3 状压
(new ) war2 题解:总体数据而言,我们很容易想到着就是DP啊,我们DP数组,用状态压缩,代表有那些点已经被占领过了,代表上一次我占的是那个.对于每一次状态转移,若当前我们要占领的Port ...
- 冲刺$\mathfrak{CSP-S}$集训模拟赛总结
开坑.手懒并不想继续一场考试一篇文. 既没必要也没时间侧边栏的最新随笔题解反思相间也丑 而且最近越来越懒了竟然都不写题解了……开坑也是为了督促自己写题解. 并不想长篇大论.简要题解也得写啊QAQ. 目 ...
- DP 01背包 七夕模拟赛
问题 D: 七夕模拟赛 时间限制: 1 Sec 内存限制: 128 MB提交: 60 解决: 23[提交][状态][讨论版] 题目描述 " 找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手 ...
- 体育成绩统计——20180801模拟赛T3
体育成绩统计 / Score 题目描述 正所谓“无体育,不清华”.为了更好地督促同学们进行体育锻炼,更加科学地对同学们进行评价,五道口体校的老师们在体育成绩的考核上可谓是煞费苦心.然而每到学期期末时, ...
- 20180520模拟赛T3——chess
[问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\) ...
- @省选模拟赛03/16 - T3@ 超级树
目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取 ...
随机推荐
- IBM中国研究院、SAP、网易游戏、IBM2015应届生招聘笔试面试问题分享
IBM中国研究院实习生 早在今年4月份.我面试的是IBM中国研究院的实习生岗位.主要是自然语言处理和语义网方向.那时我还在香港上学,两个考官对我进行的是电话面试,大概持续半个多小时,首先是我的自我介绍 ...
- liberOJ#6006. 「网络流 24 题」试题库 网络流, 输出方案
#6006. 「网络流 24 题」试题库 题目描述 假设一个试题库中有 n nn 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 m mm 道题组成试卷.并要求 ...
- 如何在退出Hue后关闭Spark会话
https://mp.weixin.qq.com/s/QLu9XhDv1YuK19VCJsFXGw
- ios 关于动画用法的总结
#import "FirstVC.h" @implementation FirstVC /* 创建xib过程 1 创建xib(名字和类名相同) 2 文件 ...
- Loadrunner11打开WebTours只显示头部解决办法
1.遇到这种情况,先查看一下路径HP\LoadRunner\WebTours下的cgierr日志中是否有错误,比如Can't open perl script "D:\Program&quo ...
- codeforces 696A A. Lorenzo Von Matterhorn(水题)
题目链接: A. Lorenzo Von Matterhorn time limit per test 1 second memory limit per test 256 megabytes inp ...
- macbook pro 配置jdk,maven环境变量
https://blog.csdn.net/vvv_110/article/details/72897142(1)下载jdk安装包,进行安装,maven安装包,进行解压 (2)改写环境变量的配置文件/ ...
- 洛谷P3830 [SHOI2012]随机树——概率期望
题目:https://www.luogu.org/problemnew/show/P3830 询问1:f[x]表示有x个叶节点的树的叶节点平均深度: 可以把被扩展的点的深度看做 f[x-1] ,于是两 ...
- JAVA编程思想中总结的与C++的区别
Java和C++都是面向对象语言.也就是说,它们都能够实现面向对象思想(封装,继乘,多态).而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象 ...
- bzoj4566
后缀自动机+dp 一个串在另一个串上跑. 先对A建出自动机,然后用B在上面跑,记录当前匹配的最大长度,每次经过一个节点记录经过次数,并加上(len-Max(par))*Right,是这个状态对答案的贡 ...