NOIP模拟2021.7.31
1、 演出邀请
神奇的模拟题。
我们可以考虑如果我们以某种合理的方式扫一遍所有的演员组合,就可以得到答案。
只需要开一个set去维护每一个演员组有多少人就可以了。
只有一个人的时候就可以加入队列了。
或者我们可以直接暴力加上一些优化就跑得飞快。例如不重复枚举每一组人里面已经出现的人,不能出现新人就直接退出。随便做都能过
2、声音辨数
傻逼题
注意N很小,每一次直接跑完全背包即可。只需要发现每次做背包的音量和是小于\(10^5+100\)的就可以了。
3、Cross
又是傻逼题
直接跑分层图最短路,注意在终点死不计入次数即可。
4、邻面合并
典型的状压DP,M<=8
之前做过一个很像的题目,这个题且M<=6,N<=100
在状压的时候就需要考虑用三进制转移来分辨两个挨着的1是否是同一个矩阵。
这里会发现三进制不太行,时间和空间都会爆掉。
但是我们可以发现这两个题是有点不同的,那一个题是每个位置都可以选,这个题是有些位置一定不能选,剩下的所有位置一定都可以选。
所以我们直接用01表示两种矩阵,不能选的地方直接判断就可以了。
于是我们就可以设\(f(i,state)\)表前i行,当前行的状态是\(state\)时所需要花费的最少矩阵个数。枚举上一行的状态然后判断能否继承上一行的矩阵就可以,很暴力,但是实现稍有困难。
做本题的时候犯了一个错误,调了很久。
在判断一个state的某相邻两位是否相同的时候,不能够直接判断 \(s&(1<<i)==s&(1<<j)\),最后结果可以是10000和1000,其中某一边的结果还要左移或者右移一位。
因为这个东西调了好久。
5、总结:
全是比较裸的SB题,T3因为没开long long爆了好多分,差点就AK了。。。
下次不开long long一定见祖宗
本文来自博客园,作者:lei_yu,转载请注明原文链接:https://www.cnblogs.com/lytql/p/15116395.html