测试105:

T1:算是一种容斥。

发现串一定是前面匹配若干位(可为0),后面若干位。

枚举前面i位,后面len-i。为了避免重复,使多种方式删除的仅被前端匹配最大长度删去。

则枚举匹配i位,i+1位一定不匹配即可不重不漏。

i<ni+125种,其余n-len-126种。

i==nn-len26种。

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替代。

筛出合法数可以记录当前数的所含数种类。讨论为12.

使每个数可以只被得到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];

 

 

posted @ 2019-11-08 16:53  seamtn  阅读(131)  评论(0编辑  收藏  举报