首页 > 其他分享 >CF1829H Don't Blame Me

CF1829H Don't Blame Me

时间:2023-09-08 09:11:39浏览次数:42  
标签:Me Don int 空集 long Blame 63 复杂度 CF1829H

比赛链接

题解

知识点:线性dp,位运算。

考虑设 \(f_{i,j}\) 表示考虑了前 \(i\) 个数字,与和为 \(j\) 的方案数。转移方程显然。

注意初值为 \(f_{0,63} = 1\) 表示空集,此时注意 \(k = 6\) 时要减去空集这一个方案。

当然也可以选择不加入空集,但dp过程需要特别处理只选自己的方案。

时间复杂度 \(O(64n)\)

空间复杂度 \(O(64n)\)

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int P = 1e9 + 7;

int a[200007];
int f[200007][64];
bool solve() {
    int n, k;
    cin >> n >> k;
    for (int i = 1;i <= n;i++) cin >> a[i];
    f[0][63] = 1;
    for (int i = 1;i <= n;i++) {
        for (int j = 0;j <= 63;j++) f[i][j] = 0;
        for (int j = 0;j <= 63;j++) {
            (f[i][j] += f[i - 1][j]) %= P;
            (f[i][a[i] & j] += f[i - 1][j]) %= P;
        }
    }
    int ans = 0;
    for (int i = 0;i <= 63;i++) if (__builtin_popcount(i) == k) (ans += f[n][i]) %= P;
    cout << ans - (k == 6) << '\n';
    return true;
}

int main() {
    std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int t = 1;
    cin >> t;
    while (t--) {
        if (!solve()) cout << -1 << '\n';
    }
    return 0;
}

标签:Me,Don,int,空集,long,Blame,63,复杂度,CF1829H
From: https://www.cnblogs.com/BlankYang/p/17686588.html

相关文章

  • PostgreSQL 工具集 之 pgmetrics 详解
    pgmetrics介绍pgmetrics是一个开源的、零依赖的、单二进制的工具,它可以轻松收集和报告PostgreSQL指标,用于脚本编写、自动化和故障排除。pgmetrics从正在运行的PostgreSQL服务器收集350多个指标,并以易于阅读的文本格式显示,或者将其导出为JSON和CSV用于脚本编写。pgmetrics是......
  • element-ui合并单元格
    当你需要在Vue.js中创建一个表格并实现单元格合并功能时,可以使用以下代码作为参考。这个示例假设你已经有一个包含表格数据的data数组和一个字段名数组fieldNameArray,用于确定哪些字段需要合并。<template><div><el-table:data="data"style="width:100%"><!--需......
  • chrome浏览器导致闪黑屏解决办法
    chrome浏览器导致闪黑屏解决办法1.进入chrome://flags2.将“Accelerated2D canvas”改为Disabled......
  • 解决error: no matching member for call to 'connect'
    在连接信号与槽时,报错解决error:nomatchingmemberforcallto'connect'原因由于信号被重载过,同名了,但是参数不一样,就会报错。这种情况下使用使用旧版语法connect(sender,SIGNAL(func()),receiver,SLOT(func1()))......
  • 【API Management】使用 APIM Inbound Policy 来修改Content-Type Header的值
    问题描述在使用APIM提供API服务管理的场景中,遇见了客户端请求时候发送的请求Header中的Content-Type不满足后台服务器的要求,但是在客户端要求客户修改代码难度较高。所以面对这样的情况,是否在APIM端修改为对请求的Content-Type进行覆写呢?问题解答可以的。APIM支持通过设置策略(Poli......
  • Spikformer: When Spiking Neural Network Meets Transformer
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!PublishedasaconferencepaperatICLR2023(同大组工作) ABSTRACT我们考虑了两种生物学合理的结构,脉冲神经网络(SNN)和自注意机制。前者为深度学习提供了一种节能且事件驱动的范式,而后者则能够捕获特征依赖性,使Trans......
  • 配置你的sublime来打cf
    第一步安装FastOlympic插件和FiraCode字体安装FastOlympic插件和FiraCode字体第二步配置competitive-companion和另一个插件来爬取测试数据U173674注意是在C盘下,然后就能愉快地用sublime打洛谷cf啦rp++......
  • WorkPlus Meet白板和文档共享功能上线,私有化视频会议全新升级
    在迅猛发展的数字化时代,私有化视频会议成为企业高效沟通和协作的关键工具。WorkPlusMeet作为领先品牌,倾力打造私有化视频会议平台,并且最新上线了全新的白板和文档共享模块。本文将重点介绍WorkPlusMeet如何通过创新功能和稳定性,提供卓越的私有化视频会议体验,助力企业实现高效沟通......
  • @Documented注解
    @Documented注解是一个标记注解,用于指示将被注解的元素包含在生成的Java文档中1。它本身没有任何属性或配置选项,通常用于自定义注解时,确保其注解信息能在生成的文档中显示1。例如:如果声明注解时指定了@Documented,则它会被javadoc之类的工具处理,所以注解类型信息也会被包括在生成......
  • SpringBoot整合thymeleaf
    JavaEE领域有几种常用的模板引擎:Jsp,Thymeleaf,Freemarker,Velocity等.对于前端页面渲染效率来说JSP其实还是最快的,Velocity次之.Thymeleaf虽然渲染效率不是很快,但语法比较轻巧.Thymeleaf支持html5标准,Thymeleaf页面无需部署到servlet开发到服务器上,以.html后缀结......