zoukankan      html  css  js  c++  java
  • 垃圾脑瘫的坑

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

    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})
  • 相关阅读:
    网页中15秒后重新发送验证码,多少秒后发送验证码
    javascript 数组去重 unique
    微信支付和微信支付通知基于sdk的说明
    php对象序列化和cookie的问题,反序列化false
    php对象序列化总出错false
    图片懒加载lazyload.js详解
    手机联动地址选择框,移动端地址联动
    Java类加载原理解析(转)
    location对象介绍
    SpringMVC使用fastjson自定义Converter支持返回jsonp格式(转)
  • 原文地址:https://www.cnblogs.com/CHK666/p/15355482.html
Copyright © 2011-2022 走看看