- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
容斥原理及其应用
容斥原理及其应用
福建省上杭职业中专学校 赖锦德
先来看一道很简单的数学题:求不大于20能被2或3整除的正整数个数?
先算出不大于20能被2整除的正整数有10个:2、4、6、8、10、12、14、16、18、20;
再算出不大于20能被3整除的正整数有6个:3、6、9、12、15、18。
但是不大于20能被2或3整除的正整数却并不是16个,而是13个。原因很简单:因为6、12、18这三个数都计算了两次,须扣除重复计算的次数。
上面这道看似简单的数学题其实就蕴涵了“容斥原理”的精髓。为了描述容斥原理,通常都要借助集合思想:
假定A和B是集合U的子集,当A∩B=时|A∪B|=|A| + |B|;当A∩B≠时|A| + |B|将|A∩B|计算了两次,所以|A∪B|=|A| + |B| - |A∩B|。这一公式便是容斥原理。
打开百度,用“什么是容斥原理”搜索一下,会得到如下通俗易懂的解答:在计数时,必须注意无一重复,无一遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。
关于容斥原理,不得不提起大多数教材都涉及到的两个公式:
[公式1] 设A=A1∪A2∪…Am,则
|A|=+…++…+
[公式2] 设AI,A=A1∪2A∪…Am,则
||=|
=|I|+…++…+
公式1是容斥原理的一般性描述,公式2是一个推论称为淘汰原则。
容斥原理的两个公式看似繁杂,但只要对公式理解透彻,在应用中突破问题的关键往往还是很轻松的。下面通过“雕塑安置”例题讲述容斥原理的应用,题意描述如下:
为了迎接百年校庆,美化校园,请设计师设计了N座精美的雕塑,准备安置在校园里。整个校园可以抽象为一个N*N 的大网格,并且为了平均分布这些雕塑,学校决定网格的同一行、同一列必须有且只有一座雕塑,还规定不能出现1 座以上的雕塑出现在同一个1*1 网格里的情况。然而某些1*1 的网格恰巧是一片湖或者是食堂,这些网格就不能安置雕塑了。每个雕塑的造型是相同的,这样同一种安置方案中交换排列都算一种。
学校想知道有多少种安置方案,你能解决这个问题吗?
输入说明:
第一行,两个整数 n,m 用空格分开 n表示n*n的大网格,m 表示不能安置雕塑的位置个数。
第二行至第m+1行,每行两个整数x,y,用空格分开,表示坐标(x,y)的1*1 网格上不能安置雕塑。
输出说明:
仅一行,方案的个数。
样例输入:
6 7
1 1
2 1
2 2
3 3
3 4
4 3
4 4
样例输出:
184
数据范围:
对于50%的数据, 保证n≤10,m≤10
对于100%的数据,保证n≤20,m≤10,方案总数≤263-1。
解题分析:
学生看到这个题,马上联想到经典的“n皇后”。仔细看看题目,与n皇后问题还是有一些区别的:
第1个区别是皇后连同一对角线都不能放,而雕塑没有这个规定;
第2个区别是安置雕塑时还有一些特殊的“禁区”。
所以,如果把题目中“某些1*1 的网格恰巧是一片湖或者是食堂,这些网格就不能安置雕塑了。”这些文字去掉,那么本题就完完全全是n皇后问题了。可是现在题目却加上了这些条件,除了雕塑之间不能“互相攻击”之外,有些网格是不能放置的。怎么办?
很朴素也很简单的解决方法是:用数组记下这些不能放置的位置,搜索时避开它们,
参考程序如下:
var
a:array[1..20,1..20]of boolean;
han:array[1..20]of boolean;
ans:int64;
n,i,j,m,aa,bb:integer;
procedure search(dep:integer);
var
i:integer;
begin
if depn then
begin
inc(ans);
exit;
end;
for i:=1 to n do
if (not a[dep,i]) and (not han[i]) then
begin
han[i]:=true;
search (dep+1);
han[i]:=false;
end;
end;
begin
assign(input,arrange.in);assign(output,arrange.out); reset(input);rewrite(output);
readln(n,m);
fillchar(a,siz
您可能关注的文档
最近下载
- 道德与法治六年级上册第四单元 法律保护我们健康成长 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 论实验动物的质量管理与控制.docx VIP
- (2024秋新版)北师大版一年级数学上册《可爱的校园》PPT课件.pptx VIP
- 《批判与创意思考》 教材配套PPT 第三章 是什么阻碍了你的思考.pptx VIP
- 麻疹病例教育课件.pptx VIP
- 第九章 冷热疗法课件.ppt VIP
- 2025年秋季新教材部编版小学道德与法治二年级上册全册道法最新教案(教学设计).docx
- 《旅游地理学》全套教学课件.ppt
- 汇德大厦材料二次转运方案.pdf VIP
- 城市公共空间设计教学提纲.ppt VIP
文档评论(0)