测试105:
T1:算是一种容斥。
发现串一定是前面匹配若干位(可为0),后面若干位。
枚举前面i位,后面len-i。为了避免重复,使多种方式删除的仅被前端匹配最大长度删去。
则枚举匹配i位,i+1位一定不匹配即可不重不漏。
则i<n时i+1位 25种,其余n-len-1位26种。
i==n时n-len位26种。
Ans=26^n-25*len*(26^(n-len-1))-26^(n-len).
注意qpow判-1.
T2:
货车运输。
当时一下秒切,觉得很大神,结果发现是原题还没看出来。。。
一类把图转化为生成树的题。(求路径边权最值,最值生成树)
T3:
60分做法,Map被卡,没改哈希表,lower_bound却可以,错失20pts,没了rk1,KUKU
哈希表最好。算复杂度忽略了100组测试数据,也没有试大数据。。。
记住要查复杂度。
这种能卡掉一个log的一定要卡。Map能用hash就用hash替代。
筛出合法数可以记录当前数的所含数种类。讨论为1或2.
使每个数可以只被得到1次。
筛数思想。
正解:
每一位都可以被0,1,2,4组合,所以答案<=4.
判1,尝试2,3是否可行,不行直接输出4.
对于3:
0~9,C(10,2)=45种搭配方式。3个来源数,C(45,3)左右。
枚举3个来源数的搭配方式,数位DP。
F[i][j][k]:第i位,上一位进了j,状态是k。
状态:3个来源数是否结尾(考虑前导0)。2^3.
细节:
yxs大神的:预处理每种搭配每种状态下可以到达的数。
c[45][45][45][8].
减少代码复杂度,常数小。
45种搭配预处理。
3个来源数可能相同。枚举方式:
F(i,1,45){
a=bei[i][0];b=bei[i][1];
F(j,i,45){
c=bei[j][0];d=bei[j][1];
F(k,j,45){
u=bei[k][0];v=bei[k][1];