C2第六次作业解题报告

时间:2022-08-13 19:43:49

看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量

http://www.cnblogs.com/newbe/

http://www.cnblogs.com/newbe/p/4069834.html

http://www.cnblogs.com/newbe/p/4072005.html

求赞求祝福啊!!!

http://www.cnblogs.com/newbe/p/4058097.html

软工老师太狠心,还请可怜一下同课不同命的我们吧~点一下文章末尾的推荐什么的呗,有个回复什么的就更好了!

1、组合

老生常谈的题

dfs即可

dfs出组合的元素满足以下性质:
(1) a[i+1]>a[i],后一个数字比前一个大;
(2) a[i]-i<=n-m+1。

只要在每个循环中核心代码大概是这样:

    ans[m+1] = ans[m] + 1;
dfs(m+1);
ans[m]++;
dfs(m);

2、Antiprime

我们设p = 2^t1 * 3^t2 * …… * p^tk(其中p是第k大的质数)是Antiprime数,则必有:t1 >= t2 >= t3 >= … >= tk >= 0。
反证法证明:若不然可将{ti}由大到小排序,设形成的新有序序列是{ti’},t1' >= t2' >= t3' >= … >= tk';令p’ = 2^t1' * 3^t2' * …… * p^tk',则:p' < p,但p'的约数个数却不少于p,这与p是Antiprime数矛盾。所以必有:t1 >= t2 >= t3 >= … >= tk。

求一个数的约数个数可以用乘法原理,例如75=3^15^2,则75有(1+1)(2+1)=6个约数。

所以我们只要按照质因数从小到大依次枚举指数,找出最多的约数个数情况下最小的正整数即可,而且由于n只有2*1e9,素数打表只需打到23即可。

然后就是dfs可搞,传递三个参数:构造的t序列长度,构造出的数的约数的个数,构造出的数的大小。

3、有穷自动机

第六次作业最恶心的一题,纯模拟,dfa什么的编译里面也学过了,不难理解

数据弱的一逼,只判断字符串第一位居然都能过...

题意不清的一逼,各种...

说几个注意点吧:

第一行的其余各列为M个可能的输入字符串,长度在5以内。

第i行第j列的形式为’qk,z’,其中q是一定出现的字符,k是整数(qk是所有状态中的一个,k=1,2,3,……),','必然出现且k和z直接只有一个',',z是字符串

空白符有' '和‘\t'两种

4、字母频度

几乎没有难度的模拟题,注意一下题目中所说特殊情况即可..

5、“数独”游戏

C1做过的题,暴力即可..

给每行每列每块各给开个数组维护已经出现的数字(1表示用过,0表示没有,这样第19个点就能过了),回溯爆搜即可