day-5

第一场牛客多校真的稀碎。。
link

A.SG暴力打表
B.简单初中计算几何
E.签到
F.规律题 显然多于100就没可能有不符合条件的了,但是也可以数位dp.这个数位dp挺复杂的(我太菜了。。。)。

\(dp[pos][sum][sta][flag][limit][lead]\)

  • pos 为 位置 pos <= 20
  • sum 是 直到现在的所有数的和%3 sum <= 2
  • sta 是 不同的sum之前是否出现过 因为sum只可能为0,1,2 sta最大为111B = 7. sta状压存数据
  • flag 是 直到现在是否满足条件 0 or 1
  • limit lead 经典状态
ll dfs(int pos, int sum, int sta, int flag, int limit, int zero)
{
    if (pos < 0) {
        return flag;
    }
    if (!limit && dp[pos][sum][sta][flag][limit][zero] != -1)
        return dp[pos][sum][sta][flag][limit][zero];
    int up = limit ? x[pos] : 9;
    ll tmp = 0;
    for (int i = 0; i <= up; i++) {
        int new_zero = (zero || i != 0);
        int new_sum = (sum + i) % 3;
        int new_flag = flag;
        if (new_sum == 0) {
            if (new_zero == 1)
                new_flag = 1;
        } else if ((1 << new_sum) & sta) {
            new_flag = 1;
        }
        int new_sta = (sta | (1 << new_sum));
        tmp += dfs(pos - 1, new_sum, new_sta, new_flag, limit && x[pos] == i, new_zero);
    }
    if (!limit)
        dp[pos][sum][sta][flag][limit][zero] = tmp;
    return tmp;
}

H.正解FFT. 暴力优化竟然也行。。。

晚上还有场tourist出的div1 + div2 22:35 - 1:35 wu 苦露西

开始学dp了,明天学背包 01背包 多重背包 分组背包 依赖背包 背包路径打印 最优方案数 etc...

苦露西~~

上一篇:C#多线程ApartmentState.STA


下一篇:20210629考试