博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
D - Cheerleaders(第三周)
阅读量:4957 次
发布时间:2019-06-12

本文共 794 字,大约阅读时间需要 2 分钟。

D - Cheerleaders

题目链接:

题目大意:

    给你一个 nm 的方格,现在有 k 个相同石子,我们要将这 k 个石子完全放入 nm 中,

要求的是第一行、第一列、最后一行和最后一列中必须有石子,求的是方案数。

 

解题思路: 

我们来分析一下这个题目,因为题目中要求的是第一行、第一列、最后一行和最后一列中必须有石子,那么我们现在应该从反面考虑也就是利用容斥原理解决这个问题,这个是很容易想到的,那么现在我们设 4 个事件: 
A 
B 
C 
D 
那么我们要求的方案数就是: 
|ABCD|=|A|+|B|+|C|+|D||AB||AC||AD||BC||BD||CD|+|ABC|+|ABD|+|ACD|+|BCD||ABCD|
然后利用二进制枚举总的状态就可以了。

#include
#include
#include
using namespace std;const int MOD=1000007;const int MAX=505;int c[MAX][MAX];void plzh(){ for(int i=0;i<=500;i++) { c[i][0]=1; c[i][i]=1; } for(int i=2; i<=500; i++) { for(int j=1; j

 

转载于:https://www.cnblogs.com/fenhong/p/6574540.html

你可能感兴趣的文章
ASP.NET杂货店实战视频 VS2010+SQL2008 三层架构设计开发讲解
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
动态缓存技术之CSI,SSI,ESI
查看>>
mac 上将.pem文件转为.pub文件
查看>>
整理下心情
查看>>
iTextSharp带中文转换出来的PDF文档显示乱码
查看>>
阶乘因式分解(一)
查看>>
qt学习记录-----3.信号与槽的问题
查看>>
『ORACLE』 内置约束(11g)
查看>>
Vue--学习过程中遇到的坑
查看>>
组件:slot插槽
查看>>
.net压缩图片质量(附demo)
查看>>
equals和==的区别
查看>>
Android6.0指纹识别开发
查看>>
java反射机制剖析(二)— Class Loader
查看>>
走进C++程序世界------异常处理
查看>>
通过用户模型,对数据库进行增删改查操作。
查看>>
去除数组中重复的元素
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>