这个是一个没有代码的题解
开学之后就只有在机房里刷刷初赛题了(我不想提前退役qwq),但是有正当理由的弹(bu)性(zuo)作业和选修课当然是能翘就翘了,物理真的难qwq。
讲一讲历年的初赛题的问题求解吧,写个题解给各位大佬看着玩…
题面的话为了省去篇幅,各位都还是自己去百度一下吧。
2004
- 第一题是一道笨笨的容斥原理,画个韦恩图就可以做出来了,大家自己尝试一下就可以了。
- 第二题其实是一个哈密顿回路【不懂请百度】,如果两个人能够交流,那就是建立一条边,然后就是求出哈密顿回路了。
2005
-
第一题其实先后大概考了两三次了,一个比较简单的算法。
- 假设原先序列的元素与在目标序列的位置上的元素建立联系,则建立若干个联系,你会发现只有一部分元素建立一个联系集合,另一些元素建立联系集合,集合内的交换次数就是集合元素个数-1。
-
第二题其实是一个博弈论(类似于nim游戏?),可以看出,先取者取时剩下1或2时是必胜态,剩下3时是必败态,那么可以进行推广,发现只要是3的倍数就是必败态,那么可以求出结果。
2006
- 第一题其实是同年某个数竞的题目改编来,但大概出题人数学不行,改崩了,其实是无解(数学不学好怎么搬砖),也提醒各位在初赛之前看看数学题吧…
- 原题其实是一个集合题,人数是2005个,你会发现有且仅有有5个人的集合才能满足条件,那么答案就是401。
- 第二题真的不知道怎么说,百年不变打表找规律。或者dp吧…方程: f [ i ] = ( i − 1 ) ∗ f [ i − 1 ] , f [ 2 ] = 1 f[i]=(i-1)*f[i-1],f[2]=1 f[i]=(i−1)∗f[i−1],f[2]=1,就是考虑第i层上的点p,实际它所有的走法就是从上一层的某个位置走下来的只有唯一一种走法,那么有 ( i − 1 ) (i-1) (i−1)个位置,每个走法都有相同。
2007
-
第一题讲道理我考场上真的不知道正确解法是什么,大概暴力找一找规律就出来了,考完之后听同学讲正解…我们考虑 f [ n ] [ k ] f[n][k] f[n][k]表示 n n n个不同的球放到 k k k个相同的盒子里,不允许出现空盒,那么考虑已经放了 n − 1 n-1 n−1个球之后,这 n − 1 n-1 n−1个球会出现两种情况。
- 一种是占领了 k − 1 k-1 k−1个盒子,那当前这个就只有放到第 k k k个盒子里面,情况是 f [ n − 1 ] [ k − 1 ] f[n-1][k-1] f[n−1][k−1]。
- 还有就是前 n − 1 n-1 n−1个小球放到了 k k k个盒子里,那么由于同伴不同,他的情况也就不同,总的情况就是