基础3--抽屉原理

基础3--抽屉原理

一、心得

二、题目及分析

三、解答

11题
我只有把白色和黑色拿完了,我才能确保我拿到两只棕色的袜子
所以答案是12+18+2=32

12题
可以看出每次是拿一双袜子,
每次拿出的袜子必然是白黑棕里面的一种,可以把这三种情况看出三个抽屉
把问题抽象为在这三个抽屉里面放袜子,使得任意一个抽屉里面有两个袜子
所以结果就是3+1=4

其它相关题目:

求证1997年1月出生的任意32个孩子中,至少有两个人是同一天出生的。
分析:1997年1月份共31天,为了回答上述问题,我们不妨假设1月份这31天为31个抽屉,而将1月份出生的任意32个孩子看作32个元素。根据抽屉原理一知,有一只抽屉里至少放入了两个元素。
解:答:1月份出生的任意32个孩子中,至少有两个人是同一天出生的。

抽屉中有十只相同的黑袜子和十只相同的白袜子,假若你在黑暗中打开抽屉,伸手拿出袜子,请问至少要拿出几只袜子,才能确定拿到了一双?答案为什么是3?
三只,不同的几率是一只黑色一只白色,就是2然后任意拿一只黑色或白色,就能配对,2+1

袜子和手套

一个抽屉里有十双白袜子、十双花袜子,另一个抽屉里有十副白手套、十副花手套。现在要从中选出一双同色的袜子和一副同色的手套。
问:如果你闭着眼睛拿,至少需要从每个抽屉里取几只袜子和几只手套才一定可以?
只要取出三只袜子就行,因为其中至少有两只是同一颜色的。
手套的取法要略为麻烦一些,因为手套不但有颜色问题,还有左右的问题。至少要取出21只手套才能配成符合题意要求的一副。少于这个数目,哪怕取出20只,还有可能20只全是同一面的。例如10只白手套,10只花手套,都是左手的。

时间: 2024-08-08 22:07:12

基础3--抽屉原理的相关文章

CodeForces 23C Oranges and Apples 抽屉原理

题目链接:点击打开链接 #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <iostream> #include <map> #include <set> #include <math.h> using namespace std; #define inf 10000000 #define l

POJ 3370 Halloween treats(抽屉原理)

Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6631   Accepted: 2448   Special Judge Description Every year there is the same problem at Halloween: Each neighbour is only willing to give a certain total number of sweets

容斥原理和抽屉原理

转自:http://www.exam8.com/zige/gongwuyuan/xingzheng/sl/201408/2984187.html 一.容斥原理 在计数时,要保证无一重复,无一遗漏.为了使重叠部分不被重复计算,在不考虑重叠的情况下,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理. 1.容斥原理1——两个集合的容斥原理 如果被计数的事物有A.B两类,那么,先把A.B两个集合的元素个数相加,发

POJ 3370 Halloween treats(抽屉原理)

题意  有c个小孩 n个大人万圣节搞活动  当小孩进入第i个大人家里时   这个大人就会给小孩a[i]个糖果  求小孩去哪几个大人家可以保证得到的糖果总数是小孩数c的整数倍  多种方案满足输出任意一种 用s[i]表示前i个打人给糖果数的总和  令s[0]=0  那么s[i]共有n+1种不同值  而s[i]%c最多有c种不同值  题目说了c<=n   所以s[i]%c肯定会有重复值了 这就是抽屉原理了   n个抽屉放大于n个苹果   至少有一个抽屉有大于等于2个苹果 就把s[i]%c的取值个数(c

51NOD 1103 N的倍数(抽屉原理)

传送门 一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数. Input 第1行:1个数N,N为数组的长度,同时也是要求的倍数.(2 <= N <= 50000) 第2 - N + 1行:数组A的元素.(0 < A[i] <= 10^9) Output 如果没有符合条件的组合,输出No Solution. 第1行:1个数S表示你所选择的数的数量.

51nod 1103 N的倍数 (抽屉原理)

题目链接:传送门 题意: 略. 分析: 把前缀和统计出来对n取模,任意连个相等的sum[i],sum[j],[i,j]内的数的和都满足这个条件. n个数对n取模,范围为[0~n-1],由抽屉原理可知,最少有一个数模n=0,或者两个数模n相等. 代码如下: #include <bits/stdc++.h> using namespace std; typedef long long LL; const int maxn = 50010; LL a[maxn],sum[maxn]; int mai

POJ 2356 Find a multiple 抽屉原理

从POJ 2356来体会抽屉原理的妙用= =! 题意: 给你一个n,然后给你n个数,让你输出一个数或者多个数,让这些数的和能够组成n: 先输出一个数,代表有多少个数的和,然后再输出这些数: 题解: 首先利用前缀和先预处理一下,然后如果sum[i]==0的话,很显然就直接输出i,然后接下来从第一位一直输出到第i位就行了 然后接下来直接用一个mod数组表示上一个答案为这个mod的时候的编号是多少 就是mod[sum[i]%n]=i; 然后判断一下if(mod[sum[i]%n]!=0)然后就直接从m

poj2356 Find a multiple(抽屉原理|鸽巢原理)

/* 引用过来的 题意: 给出N个数,问其中是否存在M个数使其满足M个数的和是N的倍数,如果有多组解, 随意输出一组即可.若不存在,输出 0. 题解: 首先必须声明的一点是本题是一定是有解的.原理根据抽屉原理: 因为有n个数,对n个数取余,如果余数中没有出现0,根据鸽巢原理,一定有两个数的余数相同, 如果余数出现0,自然就是n的倍数.也就是说,n个数中一定存在一些数的和是n的倍数. 本题的思路是从第一个数开始一次求得前 i(i <= N)项的和关于N的余数sum,并依次记录相应余数的存在状态,

证明任意6个人里面存在三个人互相认识或者存在三个人互相不认识【图论、抽屉原理】

1958年6/7月号的<美国数学月刊>上有这样一道题目:“证明在任意6个人的集会上,或者有3个人以前彼此相识,或者有三个人以前彼此不相识.”这个问题可以用如下方法简单明了地证出:在平面上用6个点A.B.C.D.E.F分别代表参加集会的任意6个人.如果两人以前彼此认识,那么就在代表他们的两点间连成一条红线:否则连一条蓝线.考虑A点与其余各点间的5条连线AB,AC,…,AF,它们的颜色不超过2种.根据抽屉原理可知其中至少有3条连线同色,不妨设AB,AC,AD同为红色.如果BC,BD ,CD 3条连