容斥原理

抽屉原理

或者说是鸽巢原理

它常用于证明存在性证明和求最坏情况下的解

\(n+1\) 个物体,划分为 \(n\) 组,那么有至少一组有两个及以上的物体

显然好吧

假设每一个分组有至多一个物体,那么最多有 \(1\times n\) 个物体,而实际上我们是放了 \(n+1\) 个物体,显然需要把多出来的一个放到其中一个分组中,那样就出现了上述情况。

我们来推广到一般情况

\(n\) 个物体,划分为 \(k\) 组,那么至少存在一个分组,含有大于等于 \(\lceil \frac{n}{k} \rceil\) 个物品

若每个分组含有小于 \(\lceil \frac{n}{k} \rceil\) 个物体,则其总和 :

\[s\le (\lceil \frac{n}{k} \rceil-1)\times k=k\lceil \frac{n}{k} \rceil-k<k(\frac{n}{k}+1)-k=n \]

矛盾,故得证。

容斥原理

引入

我们在学习统计集合之类的见过一类问题

假设班里有 \(10\) 名同学喜欢下棋,\(15\) 名同学喜欢游泳,\(21\) 名同学喜欢踢足球,求班里一共有多少名学生(每一名学生至少喜欢一项)

\(10+15+21=46\) 个吗?显然不是,因为有人可以同时喜欢两项,甚至三项都喜欢,这个时候我们的答案是不固定的。

我们用 \(A,B,C\) 表示下棋,游泳,踢足球的同学的集合,则学生总数是 \(|A\cup B\cup C|\) 。刚才说过,如果直接累加 \(|A|,|B|,|C|\) 有的元素会被重复统计,根据下图,我们需要扣去 \(|A\cap B|,|B\cap C|,|C\cap A|\),但这样一来,中间一小部分多扣了,我们需要加回来,即 \(|A\cap B\cap C|\),所以我们最后得到:

\[|A\cup B\cup C|=|A|+|B|+|C|-|A\cap B|-|B\cap C|-|C\cap A|+|A\cap B\cap C| \]

推广到一般情况。

定义

\(U\) 中元素有 \(n\) 中不同的属性,而第 \(i\) 种属性称为 \(P_{i}\),拥有属性 \(P_{i}\) 的元素构成集合 \(S_{i}\),那么:

\[\left | \bigcup_{i=1}^{n} S_{i} \right |=\sum_{i} | S_{i} |-\sum_{i<j}^{}|S_{i}\cap S_{j}|+\sum_{i<j<k}^{}|S_{i}\cap S_{j}\cap S_{k}|-\ldots +(-1)^{m-1}\sum_{a_{i}<a_{i}+1}^{}\left | \bigcap_{i=1}^{m}S_{a_{i}} \right | +\ldots +(-1)^{n-1}|S_{1}\cap \ldots \cap S_{n}| \]

即:

\[\left | \bigcup_{i=1}^{n}S_{i} \right |=\sum_{m=1}^{n}(-1)^{m-1}\sum_{a_{i}<a_{i}+1}\left | \bigcap_{i=1}^{m}S_{a_{i}} \right | \]

证明:

对于每一个元素使用二项式定理计算其出现的次数,对于元素 \(x\),假设他出现在 \(T_{1},T_{2},\ldots,T_{m}\) 的集合中,那么他的出现次数为:

\[Cnt=|\{T_{i}\}|-|\{T_{i}\cap T_{j}|i<j\}|+\ldots+(-1)^{k-1}\left | \left \{ \bigcap_{i=1}^{m} T_{a_{i}}|a_{i}<a_{i}-1 \right \} \right | +\ldots+(-1)^{m-1}|\{T_{1}\cap \ldots \cap T_{m}\}| \]

\[=\binom{m}{1}-\binom{m}{2}+\ldots+(-1)^{m-1}\binom{m}{m} \]

\[=\binom{m}{0}-\sum_{i=0}^{m}(-1)^{i}\binom{m}{i} \]

\[1-(1-1)^{m}=1 \]

于是每一个元素出现的次数为 \(1\),那么合并起来就是并集。

本文转载于网络 如有侵权请联系删除

相关文章

  • YOLOv5超详细的入门级教程(思考篇)(一)——关于遮挡问题与小目标检测问题

    一些拙见,欢迎大家在评论区指出问题,交流讨论。1.Introduction还是这张老图,16年到18年CVPR和ICCV的高频词词云。从2012年进入深度学习时代开始,目标检测、图像分割这样的视觉基本任务到现在已经火了有10年已久了(如果算上传统图像处理的方法,那么目标检测到现在已经被集中攻克22年了)。最新出炉的18篇CVPR2021oral,里面值得注意的一点就是3D目标检测的研究。比如3D场景理解、3D中摄像机重定位、3D分割与运动估计、单目3D目标检测、3D点云注册和检测、3D物体渲染…(18篇里好几篇都是新颖的3D目标检测任务),可以看出来2D大家已经研究腻了(或者说是放弃了),其中一个新的方向就是,开始集中火力攻克3D目标检测的问题。目前我也有研究一些关于3D点云目标检测的内容,可以参考我的其他博客。BUT!!!这18篇新的CVPR2021oral里面,有这样一篇,开放世界中的目标检测。该模型的任务是:1)在没有明确监督的情况下,将尚未引入该对象的对象识别为“未知”,以及2)当逐渐接收到相应的标签时,逐步学习这些已识别的未知类别,而不会忘记先前学习的类别。简单来说,识别现实

  • GNN在Google是如何落地的?附Bryan的43页分享ppt

    G图神经网络是一种对没有固定结构的数据进行建模的诱人方法。然而,让他们按预期工作多年来经历了一些曲折。在本次演讲中,我将介绍图挖掘团队在谷歌上使GNN有用的工作。我将专注于我们已经发现的挑战以及我们为它们开发的解决方案。具体来说,我将重点介绍一些工作,这些工作实现了更富表现力的图卷积、更健壮的模型和更好的图结构。

  • 奇安信 92 万项目被废,其称违法取消、投诉失败:腾远创 143 万高价中标

    2021年10月22日,中国健康教育中心发布《科普资源库安全设备与集成服务采购项目》招标公告,预算146万元。采购产品一览表:中标结果2021年11月19日发布成交结果公告,网神信息技术(北京)股份有限公司91.800000万元中标。主要投标标的: 更正公告2021年12月13日发布更正公告,经质疑且采购人确认采购结果,本项目中标人变更为:腾远创(北京)科技有限公司,中标金额:1428000.00元。主要投标标的:投诉处理结果 2022年5月7日,中华人民共和国财政部发布《政府采购信息公告(第一千六百零八号)》投诉处理结果公告。投诉处理结果公告一、项目编号:GC-HGX211222二、项目名称:中国健康教育中心科普资源库安全设备与集成服务采购项目三、相关当事人投诉人:网神信息技术(北京)股份有限公司(以下称投诉人)被投诉人:中央国家机关政府采购中心(以下称国采中心)当事人:中国健康教育中心四、基本情况投诉人因对国采中心就本项目作出的质疑答复不满,向本机关提起投诉。投诉事项为:国采中心违法取消其中标结果。本机关依法调查并作出处理决定。五、处理依据及结果根据《政府采购质疑和投诉办法》(财政

  • Python ATM小程序 v1

    注意:下面的程序和上一遍中的流程有点区别!数据库设置:mysql>descback_card;##信用卡表结构! +--------------+--------------+------+-----+---------+-------+ |Field|Type|Null|Key|Default|Extra| +--------------+--------------+------+-----+---------+-------+ |card_id|int(10)|NO|PRI|NULL|| |card_passwd|varchar(128)|NO||NULL|| |card_user|varchar(64)|YES||NULL|| |card_balance|float|YES||NULL|| |create_time|datetime|YES||NULL|| |login_time|datetime|YES||NULL|| |err_time|datetime|YES||NULL|| +--------------+--------------+------+-----+-

  • 生产环境Oracle RAC扩表空间全记录

    最近zabbix告警rac库表空间使用率超过75%需要扩容,本文记录了变更操作。1.表空间查看set pages 999 set linesize 999 SELECT a.tablespace_name "表空间名称",  100-ROUND((NVL(b.bytes_free,0)/a.bytes_alloc)*100,2) "占用率(%)", ROUND(a.bytes_alloc/1024/1024,2) "容量(M)", ROUND(NVL(b.bytes_free,0)/1024/1024,2) "空闲(M)", ROUND((a.bytes_alloc-NVL(b.bytes_free,0))/1024/1024,2) "使用(M)",  TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') "采样时间"    FROM  (SELECT f.tablespace_name, SUM(f.bytes) by

  • 被V神点赞, 我是如何用五子棋打败以太坊排名最高的应用的? |人物志

    记者/Aholiab 出品/CSDN、区块链大本营董沫,CelerNetwork创始人兼CEO,湾区创业者,圈内人往往亲切地称他为「老董」。早年,老董凭借强大的技术和学术背景,做了很多区块链相关技术的培训课程,尤其擅长用极其简单的语言来解释复杂的技术原理,「现在有四五百人毕业了」。因为看准了解决区块链交易速度慢的最佳方法是「链下扩容」(即layer2)这个方向(从他们推出的五子棋应用,可以看出链下与链上体验的差别),拉拢了一批上海交大、MIT的学霸师兄弟成立了CelerNetwork(以下简称「Celer」)。说起Celer,国内的开发者可能知之甚少,但如果用一个集齐了MIT、普林斯顿、UIUC和加州大学伯克利分校的博士的公司,以及这个公司的创始人被邀请与V神一起参与世界上最大的黑客马拉松并担任评委;其经济学模型论文被北美顶级加密货币经济学会议CESC接受并邀请做演讲等一系列的事件来形容,你是否能感受到一些它的分量?董沫就是这样一家公司的创始人之一,作为山西人和晋商的拥趸之一,董沫直言区块链最能打动自己的地方,就在于它实现的是一个「商通天下」的宏大愿景。去年10月,营长连线了人在美国的

  • Java 历史 原

    JamesGosling最初开始Java语言项目是在1991年的7月。Java被用在他的许多set-topbox工程中。这个语言最开始的时候被称为Oka,这个是因为 JamesGosling办公室外有一颗橡树,同时也考虑过使用Green这个名字,最终这个语言被命名为Java。这个名字是从一堆名字中随机选取的。Sun发布了Java的1.0版本的实现是在1995年。这个程序被称为编写一次随处运行(WORA),这样为多平台提供了无成本的运行条件。在2006年11月13日,Sun发布了Java免费的开源版本,这个版本是基于 GNUGeneralPublicLicense(GPL)开源协议的。在2007年5月8日,Sun完成了开源过程,将所有的Java源代码开源了,除了Sun没有取得版权的一些代码外。与传统型态不同,Sun公司在推出Java时就将其作为开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同,此外,微软公司后来

  • 谷歌旗下DeepMind成立健康部(视频)

    选文|孙强 翻译整理|孙强、王婧、丁一 链接|http://www.bloomberg.com/news/articles/2016-02-24/google-s-deepmind-forms-health-unit-to-build-medical-software◆◆◆编者注谷歌旗下的DeepMind以开发尖端的自主学习软件而出名,这几天该公司开发的人工智能机器人AlphaGo正在挑战排名世界第一的韩国围棋选手李世石,整个互联网也因此搅的天翻地覆。硝烟未尽,肩负谷歌母公司Alphabet进军生命科学的神圣使命,DeepMind将携其强大的机器学习算法,在医疗保健领域开辟新战场。◆◆◆摘要DeepMind健康部与医生共同打造医疗软件进军生命科学是谷歌母公司Alphabet的一项重大举措谷歌旗下的DeepMind,作为一家被网络搜索服务提供商所拥有的人工智能公司,正通过将它的专长运用到医疗保健领域向医疗技术产业进军。DeepMind周三表示,它的伦敦子公司已与伦敦帝国理工学院和伦敦皇家自由NHS信托基金会强强联手,成立DeepMindHealth。DeepMind的联合创始人穆斯塔法·

  • Bessemer Venture Partners预测:这8个趋势将在2018年取代云计算

    在Bessemer《2018年云计算报告》中,一个图表显示了云空间中所有高影响力的基于API的公司。 BessemerVenturePartners,这家硅谷顶级风险投资公司每年会与上千家云公司会面,并密切关注其在云市场的数十项投资。为了解决这一问题,Bessemer还研究了78家已经上市的云公司,密切关注他们的业绩,以便更好地指导他们仍在进行的私人投资项目。所有这些数据汇集在公司的年度云报告中,Bessemer在周四发表了这篇报告。在这份报告中,Bessemer投资者ByronDeeter、KristinaShen和AnnaKhan分享了他们在云计算上所看到的未来一年的情况。下面列举了这些风投者对于2018年的一些预计:1、API将继续占据主导地位SlackCEOStewartButterfieldBessemer预测,API可以让程序员轻松地将他们的软件和服务集成到一起,并将继续推动技术创新。类似Shippo这类的公司,它们提供了一个API来帮助电子商务公司运送他们的产品。企业存储公司Box则是围绕API构建的,用以帮助软件开发人员轻松地将云存储构建到他们的应用程序中。简而言之,A

  • 干货 | 敏捷开发的持续改进

    作者简介黎娟,去哪儿过程改进总监。15年软件项目管理及过程改进经验,曾先后就职于雅虎中国/阿里巴巴、腾讯、去哪儿网,擅长问题分析以及基于问题驱动的过程改进。“敏捷”这个词近几年非常火,经常会有人问:“我们应该怎样开始做敏捷?”或者:“能不能来帮我们推一下敏捷?”这种问题我通常都不敢轻易回答——敏捷有很多实践,管理的、工程的都有,但敏捷绝非我们看到的站会、持续集成、TDD等那么简单,真正的敏捷体系是从理念到文化的一次变革。所以具体到一个团队,究竟为什么要做敏捷,能够多大程度地承受改变所带来的痛苦和风险,本质上还是需要自己先想清楚,我们要解决的问题或者期望的价值究竟是什么,再来判断应该做什么以及怎么做。这里分享几个敏捷相关的过程改进案例,希望能够给到大家一些可以借鉴的东西。案例一:灵活地响应变化两年前我在酒店事业部做支持的时候,有一次同一位产品总监聊天,他向我抱怨,说:“技术团队怎么有那么多的项目延期?他们能不能靠谱一点,至少给我的周计划里,承诺要完成的事情应该做到吧!”我反问了一个问题:“那作为一个产品总监,你能不能保持你的团队一周内的需求不改变呢?”他想了想说:“我做不到。”我们相视一

  • 用Sql生成数据插入Sql脚本

    CREATEPROCEDUREdbo.UspOutputData@tablenamesysname AS declare@columnvarchar(1000) declare@columndatavarchar(1000) declare@sqlvarchar(4000) declare@xtypetinyint declare@namesysname declare@objectIdint declare@objectnamesysname declare@identint setnocounton set@objectId=object_id(@tablename) if@objectIdisnull--判断对象是否存在 begin print'Theobjectnotexists' return end set@objectname=rtrim(object_name(@objectId)) if@objectnameisnullorcharindex(@objectname,@tablename)=0--此判断不严密 begin print'ob

  • 交易费用过高的比特币还能成为“未来货币”吗?

    近日,世界上最大的比特币支付服务商之一的BitPay发布公告表示:由于交易费用持续攀升,该公司将不再接受低于$100美元的比特币交易,虽然之后迫于比特币社区的压力又撤销了公告。其实这已经不是比特币第一次因为交易费过高遇冷了。此前,支持比特币支付的游戏平台Steam就因考虑到比特币的交易费过高,正式宣布放弃了这种支付方式。比特币交易费不断攀升,平均交易费用甚至达到了$41.66,要知道几年前一个比特币不过才区区$20。如此骇人的高额比特币交易费到底是从何而来呢?交易费始终比特币是基于区块链的一种数字货币,在进行交易时,信息会被广播到网络中,由矿工收集并打包生产区块,只有区块生产后交易才被承认。因此用比特币交易费激励矿工继续挖矿为比特币提供足够的算力从而确保比特币网络的安全。比特币交易费起初除了激励矿工之外,主要是为了防止过多的小额交易冲击比特币网络。由于比特币采用P2P网络,交易处理的能力是有限的,如果每个人都频繁进行很小额的交易,那么比特币网络将会拥堵不堪,造成交易延迟甚至是停滞。所以设定一个门槛,小额交易存在成本自然交易数量就会降低。因此前期,比特币交易费主要影响因素是比特币交易数量

  • Mysql数据库学习(四):常用Mysql C API 介绍和使用、封装一个访问Mysql数据库的类MysqlDB

    首先,环境是windows+ vs2008,Mysql数据库已经安装好,在使用之前,需要配置工程属性,附加包含目录添加D:\ProgramFiles\MySQL\MySQLServer5.6\include(Mysql安装目录),附加库目录添加 D:\ProgramFiles\MySQL\MySQLServer5.6\lib ,附加依赖项添加mysqlib.lib,当然mysqllib.lib只是包含符号而已,可执行文件运行的时候需要mysqllib.dll(lib目录下),将其拷贝到exe同目录下。 一、常用MysqlCAPI介绍和使用1.mysql_initMYSQL结构代表一个连接句柄MYSQL*mysql_init(MYSQL*mysql);如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。2.mysql_real_connect//连接数据库MYSQL*mysql_real_connect(MYSQL*mysql,con

  • 年中总结

      时间真快啊,来广联达一年了。今年也过去一半还要多了。   先一句话总结下吧,今年严格来说,收获并不算大。不高不低,平平淡淡的就那么过去了。没有奋斗逼,也没有躺平摆烂。就是做该做的事,玩该玩的。没有很高兴,也没有很低落。享受这些宁静吧。几乎有一半的时间有在走番茄,也有一半的时间没有走番茄。总体上懈怠了很多。好像懈怠也成了一种常态了。   比较好的是,22年几乎每天都写工作日志了。每周也都有相应的计划。不好的是,周计划中,好像没有完成过,尤其是运动和学习更甚。这里需要反思,以后要提高自己,就要制定具体的目标,或者制定可行的目标。之前计划每天6点起床,发现确实是不现实,于是改成了6点半。给自己制定一个稍微努力一些就能实现的目标,比给自己制定一个不可能完成的目标去让自己痛苦要好的多。   每天反思,每天去思考一下,可以让自己变得更加平和。让自己不至于偏的太厉害。可以有爱好,但是不能影响到生活。什么是主,什么是辅要心里有个秤。今年有个特别好的地方,戒掉了一些不好的习惯。虽然不敢保证能完全戒掉吧,但是已经坚持了很久。以后应当继续努力。   说下工作吧,工作方面,来回调动。来来去去的做了很多,但

  • JNA 调用操作系统函数 和 系统调用

    linux系统调用syscall表:https://filippo.io/linux-syscall-table/ LinuxNamespace特性简要介绍 原文:https://iliangqunru.bitcron.com/post/2018/jna-shi-ji-kai-fa-zhong-ruo-gan-wen-ti-jie-jue-fang-fa 其他: JNI的替代者—使用JNA访问Java外部功能接口 InvokeSyscallsfromJava   java发起系统调用,本质还是用了JNA,调用OS提供的syacall函数: importcom.sun.jna.Library; importcom.sun.jna.Native; publicclassTest{ publicinterfaceCStdLibextendsLibrary{ intsyscall(intnumber,Object...args); } publicstaticvoidmain(String[]args){ CStdLibc=(CStdLib)Native.loadLibrary

  • 现代软件工程第三次作业

    请同学们根据“学生自我评价结果”,制定本次课程中可以改进提高的方面,发表博客明确自己的改进目标。 在课程中期、终期撰写博客展示自己提升的方面,需要有佐证。 刘敬成 在本科阶段,我有一定的项目经验以及算法基础,并且有较强的学习能力,但是由于本科阶段的时间、能力等限制,再没有具体的要求的情况下,一直只完成最简单的功能的开发,并没有使用太多和软件工程相关的技巧。 在本次课程中,我希望自己能够完全遵循软件工程的开发模式,积极分享自己的学习体会,最重要的是,在这次课程中,进一步的提高自己的沟通交流能力,以及团队协作能力,帮助小组更好的完成本次的课程任务。   李一鸣       本科阶段,虽然我写过不少代码,做过不少项目,但是基本没有参与过比较正式的多人合作开发项目,平时写代码也只关心能完成当前目标就行,几乎没有考虑过代码的健壮性和可复用性。导致很多时候会写很多重复的代码,浪费精力和时间,或者代码在环境条件稍微变化的情况下经常会完全崩溃,体验极其不佳,少有的几次团队合作开发大家基本也是各自为战,效率低下。  &nbs

  • windows和linux执行class

    windows java-classpath.;lib/*com.Test复制 linux java-classpath.:ib/*com.Test复制      "."代表当前路径,这是java执行时的默认路径,所以在执行了classpath后需要手工加上这个路径,否则会提示找不到要执行的类。    ";"用来隔开两个路径    "lib/*"表示lib下的所有jar文件,如果只使用某一个jar,可以具体指定,如"lib/XX.jar"  windows与linux相似:除了分隔符";"需要使用linux的分隔符":"     知识只有共享才能传播,才能推崇出新的知识,才能学到更多,这里写的每一篇文字/博客,基本都是从网上查询了一下资料然后记录下来,也有些是原滋原味搬了过来,也有时加了一些自己的想法

  • [LeetCode] 876. Middle of the Linked List 链表的中间节点

    题目: 思路: 一开始的思路是遍历一遍链表,得到节点的个数num,再进行遍历,到num/2个节点时便返回(索引从0开始) 不过题解中有一个双指针的解法,特别好,记录下来: 构建两个指针,一个快指针,一个慢指针,快指针每次走两个结点,慢指针每次走一个节点,那么快指针走到nullptr时,慢指针必然在中间节点 代码: /** *Definitionforsingly-linkedlist. *structListNode{ *intval; *ListNode*next; *ListNode(intx):val(x),next(NULL){} *}; */ classSolution{ public: ListNode*middleNode(ListNode*head){ //普通解法 //intlen=0; //ListNode*cur=head; //while(cur){ //len++; //cur=cur->next; //} //intnum=len/2; //while(num--)head=head->next; //returnhead; //双指针法

  • 392. 判断子序列

    ✅做题思路or感想 法一:暴力 这道题一眼暴力,单指针遍历就可以解决,没什么好说的 classSolution{ public: boolisSubsequence(strings,stringt){ intindex=0; //单指针指向s for(inti=0;i<t.size();++i){ if(t[i]==s[index]){ //如果匹配上了,则单指针指向s的下一位 ++index; } } //如果单指针指向了s的最后一位,则说明s在t中完全匹配上了 returnindex==s.size()?true:false; } }; 复制 法二:动态规划 题目是s是否为t的子序列,那么可以转换一下成求最大公共子序列的问题,如果最大公共子序列的长度等于s的长度,则说明s就是t的子序列 dp数组含义 子序列的题一般都这样子定义dp数组:dp[i][j]表示在s的[0,i-1]和t的[0,j-1]上最长的子序列长度(注意这里是范围里的最长子序列长度!) 为什么要这样子定义呢,因为这样子更方便针对空子数组做操作,比如dp[0][0]根据意义是nums1[-1],nums2[-1]

  • 再用python写一个文本处理的东东

    朋友遇到一点麻烦,我自告奋勇帮忙。事情是这样的: -他们的业务系统中,数据来自一个邮箱; -每一个邮件包含一条记录; -这些记录是纯文本的,字段之间由一些特殊字符分隔; -他们需要从邮箱中批量取出每一封邮件,放到一个excel文件中。   这些对python来说,真是小菜一碟。(事后证明,还是有些小坑,让我头疼了好一会儿。) 因为是初学者,没有必要从python2起步,我直接用了python3。 首先是收信。邮箱不支持pop3取信,好在支持IMAP。查了一下,python3有专门的库可以做到。 然后是要用正则表达式处理文本。 生成excel需要用到什么什么第三方库,找了一下,没下下来。干脆就简单点,生成csv文件吧。 ============== 1defmain(): 2M=imaplib.IMAP4_SSL("my-host.com","993") 3t=0 4try: 5try: 6M.login('my-username','my-password') 7exceptExceptionase: 8print('loginerror:%s'%e) 9M.close()

  • 【洛谷】P1227 [JSOI2008]完美的对称

    题目描述 在峰会期间,必须使用许多保镖保卫参加会议的各国代表。代表们除了由他自己的随身保镖保护外,组委会还指派了一些其他的特工和阻击手保护他们。为了使他们的工作卓有成效,使被保卫的人的安全尽可能得到保障,保镖被分配到被保护人的各个方向。 保镖的最佳站立位置应该是这样的:被保护人应站在所有保镖的对称中心。但是,只要被保 护人一移动,保镖就很难根据要人的新位置调整位置。大多数的特工都很难对此作出实时调整。 因此,安全部长决定将该过程逆转一下,保镖先站好自己的位置,然后要人在他们的对称中心找到合适的位置。如果要人随便走动,我们就对他的安全不必负责。 你的工作是使这个过程自动操作。给出一组N个点(保镖的位置),你要找出它们的对称中心S,在这儿被保护人将相对安全。下面以此类推。 首先我们给定一点A以及对称中心S,点A'是点A以S为对称中心形成的像点,即点S是线段AA'的对称中心。 点阵组(X)以S为中心的像点是由每个点的像点组成的点阵组。X是用来产生对称中心S的,即点阵X以S为中心的像点的集合即为点阵X本身。 输入输出格式 输入格式: 输入文件第一行是一个整数N,1<=N<=200

相关推荐

推荐阅读