T2T2

解:爆搜(早知道数据只有 10 我就直接 DFS 了QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ)

T4T4

解:先筛出 10610^6 之内的所有质数,内部第一层枚举 p(记得用 prime 数组),判断条件为i(p)^4<n,因为 q>p,如果 i^4=n ,由于q>p,则没有解。第二层循环枚举 q,判断条件为 i*j^3<=n

T5T5

解:首先对于每一个 OR 运算,前面要么 x[i]=1,要么 y[i-1]=1,要么两者皆满足,很显然,对于前者,x[1]~x[i-1] 可以随便选择,而后者要么来自 x[0] 或者前面的 OR 运算,所以只需要累加 2i2^i,最后在增加 11 即可。

T6T6

状态表示:用f[i][u][v] 记录方案数, i,u,v分别表示使用的总次数,用第一个跃迁的次数,用第二个跃迁的次数(第三个跃迁的次数可计算得到,所以隐藏)

状态计算(示例代码片段):

if(mp.count({x,y})==0){ // 不是障碍点
    dp[i][u][v]=dp[i-1][u][v]; // 第三种跃迁
    if(u>0) (dp[i][u][v]+=dp[i-1][u-1][v])%=mod; // 第一种跃迁
    if(v>0) (dp[i][u][v]+=dp[i-1][u][v-1])%=mod; // 第二种跃迁
    if(i==n){ // 使用了 n 次
        (ans+=dp[n][u][v])%=mod; // 累加
    }
}