• 垃圾脑瘫的坑


    该题解为残缺品,笔者自己也不是很懂

    CF1327F AND Segments题解

    题目描述

    你有三个整数 (n, k, m) 以及 (m) 个限制 ((l_1, r_1, x_1), (l_2, r_2, x_2), ldots, (l_m, r_m, x_m))

    计算满足下列条件的,长度为 (n) 的序列 (a) 的个数:

    • 对于每个 (1 le i le n)(0 le a_i lt 2 ^ k)

    • 对于每个 (1 le i le m),数字的按位与 (a[l_i] ext{ and } a_[l_i + 1] ext{ and } ldots ext{ and } a[r_i] = x_i)

    两个序列 (a, b) 被认为是不同的,当且仅当存在一个位置 (i) 满足 (a_i eq b_i)。 由于答案可能过大,请输出其对 (998 244 353) 取模的结果。

    解题思路

    CF1327F AND Segments题解

    题目描述

    你有三个整数 (n, k, m) 以及 (m) 个限制 ((l_1, r_1, x_1), (l_2, r_2, x_2), ldots, (l_m, r_m, x_m))

    计算满足下列条件的,长度为 (n) 的序列 (a) 的个数:

    • 对于每个 (1 le i le n)(0 le a_i lt 2 ^ k)

    • 对于每个 (1 le i le m),数字的按位与 (a[l_i] ext{ and } a_[l_i + 1] ext{ and } ldots ext{ and } a[r_i] = x_i)

    两个序列 (a, b) 被认为是不同的,当且仅当存在一个位置 (i) 满足 (a_i eq b_i)。 由于答案可能过大,请输出其对 (998 244 353) 取模的结果。

    解题思路

    对于每一位,我们可以分开考虑。

    假设考虑到第(a)位。

    对于每段区间,若(x_i)对应的位为(1),那么整段区间这位对应的数都是(1),用差分数组维护

    对于(x_i)(0)的区间,考虑用DP求解方案数。

    为转移方便,我们维护一个(pos_i)表示(i)之前的第一个0至少填在(pos_i)这个位置,可以参考代码理解

    (f_{i,j})表示从低到高位填到第(i)位,最后一个0的位置为(j)时的方案数,分三种情况转移

    1. (j<pos_i),则(f_{i,j}=0),这种情况不可能
    2. (pos_ileq j leq i-1),则(f_{i,j}=f_{i-1,j}),因为(i)这里没有决策,只能填(1)
    3. (i=j),则(f_{i,i}=sum_{x=pos[i-1]}^{i-1}f_{i-1,x})
  • 相关阅读:
    献给 Python 开发人员的 25 个最佳 GitHub 代码库!
    6 drf-认证权限解析频率
    4: drf视图组件
    3 drf请求与响应
    十三:Django框架学习之auth模块
    十二:django中间件学习之拓展1
    git光速从入门到精通
    mac系统下的mysql安装(ver.8.0.20)
    python小练习——2048
    docker下overlay2占用空间过大,清理docker占用空间
  • 原文地址:https://www.cnblogs.com/CHK666/p/15355482.html
Copyright © 2020-2023  润新知