BZOJ1879:[SDOI2009]Bill的挑战(状压DP)

Description

Input

本题包含多组数据。 
第一行:一个整数T,表示数据的个数。 
对于每组数据: 
第一行:两个整数,N和K(含义如题目表述)。 
接下来N行:每行一个字符串。
T ≤ 5,M ≤ 15,字符串长度≤ 50。

Output

如题

Sample Input

5
3 3
???r???
???????
???????
3 4
???????
?????a?
???????
3 3
???????
?a??j??
????aa?
3 2
a??????
???????
???????
3 2
???????
???a???
????a??

Sample Output

914852
0
0
871234
67018

Solution

第一眼数据范围:撞鸭状压DP没跑了
而且连压什么都告诉你了,毕竟只有N能压
状态设计很简单:f[i][S]该选第i列了,当前选中的行是集合S
然后我后面就G了……搞了半天又是容斥又是各种判断乱搞只有20……
其实预处理一下就非常好做了。
预处理出g[第i列][j字母]=集合x
表示j字母可以和集合x的第i位匹配(我第一次看的时候有点绕)
然后就枚举当为集合x的时候第i位填j字母然后进行转移就好了
果然我就是R1出题人说的"学数据结构学傻了"
虽然我数据结构仍然辣鸡

Code

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #define MAXN (40001)
 5 using namespace std;
 6 int f[52][MAXN],g[52][31];
 7 int N,K,T,len,sum;
 8 char s[101][101];
 9 
10 int main()
11 {
12     scanf("%d",&T);
13     while (T--)
14     {
15         memset(f,0,sizeof(f));
16         memset(g,0,sizeof(g));
17         scanf("%d%d",&N,&K);
18         for (int i=1; i<=N; ++i)
19             scanf("%s",s[i]+1);
20         len=strlen(s[1]+1);
21         
22         for (int i=1; i<=len; ++i)
23             for (int j=0; j<26; ++j)
24                 for (int k=1; k<=N; ++k)
25                     if (s[k][i]=='?' || s[k][i]==j+'a')
26                         g[i][j]|=(1<<k-1);
27         
28         sum=(1<<N)-1;
29         f[0][sum]=1;            
30         for (int i=1; i<=len; ++i)
31             for (int j=0; j<=sum; ++j)
32                 if (f[i-1][j])//不加这个判断会TLE,可能是%太多了? 
33                     for (int k=0; k<26; ++k)
34                         (f[i][j&g[i][k]]+=f[i-1][j])%=1000003;
35 
36         int ans=0;
37         for (int i=0; i<=sum; ++i)
38         {
39             int x=i,cnt=0;
40             while (x)
41             {
42                 if (x&1) cnt++;
43                 x>>=1;
44             }
45             if (cnt==K) (ans+=f[len][i])%=1000003;
46         }
47         printf("%d\n",ans);
48     }
49 }

转载于:https://www.cnblogs.com/refun/p/8877245.html

Dify DSL文件分享 Dify讨论群 大模型token资源等(持续收集更新) 基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。 阅读详情

相关推荐

别再只会插卡了!用示波器实测SIM卡上电时序与通信波形(附故障排查)

本文深入解析了SIM卡通信的电气信号与时序规则,通过示波器实测波形揭示SIM卡上电时序与通信协议的关键细节。从VCC、CLK、RST、DATA四路信号的协同工作,到ATR(Answer to Reset)的解析,再到常见故障的波形诊断与排查方法,为硬件工程师提供了实用的调试指南。文章还分享了高级调试技巧与现代化工具链搭建建议,帮助提升物联网设备SIM卡通信的可靠性与效率。

weixin_42567279的博客 325

【BZOJ1879】[Sdoi2009]Bill的挑战 状压DP

【BZOJ1879】[Sdoi2009]Bill的挑战 Description Input 本题包含多组数据。 第一行:一个整数T,表示数据的个数。 对于每组数据: 第一行:两个整数,N和K(含义如题目表述)。 接下来N行:每行一个字符串。 T ≤ 5,M ≤ 15,字符串长度≤ 50。 Output 如题 Sample Inpu...

aodanchui1057的博客 124

CentOS 7下Synopsys DC综合工具安装与配置全攻略(附常见报错解决方案)

本文详细介绍了在CentOS 7操作系统上安装与配置Synopsys Design Compiler(DC)综合工具的完整流程。内容涵盖从系统环境准备、软件安装、许可证配置到实战综合的全过程,并针对DC综合工具在安装和运行中常见的报错问题提供了具体的解决方案,帮助数字IC设计初学者快速搭建稳定的EDA学习环境。

weixin_29159441的博客 257

【bzoj1879】【SDOI2009】【bill的挑战】【状压dp】

Description Input 本题包含多组数据。 第一行:一个整数T,表示数据的个数。 对于每组数据: 第一行:两个整数,N和K(含义如题目表述)。 接下来N行:每行一个字符串。 Output  1   2 1  a?  ?b Sample Input 50 Sample Output 对于30%的数据,T ≤ 5,M ≤ 5,字符串

sunshinezff的专栏 1180

AI数字人短视频数字人口播数字人分身建模流程全解析

在人工智能与计算机图形学蓬勃发展的当下,数字人建模作为打造虚拟数字人的核心环节,其流程复杂且精妙,融合了多种前沿技术与创意构思,为栩栩如生的数字人形象奠定基石。​。

2403_87518095的博客 1444

AI工程化之生成式UI & A2UI(一)

本文系统介绍了生成式UI和Google A2UI技术。生成式UI通过AI直接生成前端代码(完全生成式)或DSL(混合式),实现千人千面的动态界面和研发提效。Google A2UI提出组件级和消息级协议,采用JSON规范实现渲染框架解耦,支持多端渲染。文章详细阐述了A2UI的架构设计,包括协议生成、服务端处理和渲染器实现,并对比了与传统前端框架的差异,指出A2UI本质是UI=F(AI(UI)+AI(state))的创新模式。最后通过playground项目展示了A2UI的实践应用。

qq_34306228的博客 588

bzoj 1879 //1879: [Sdoi2009]Bill的挑战 状压dp/容斥原理

bzoj 1879 //1879: [Sdoi2009]Bill的挑战 //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1879 //在线测评地址https://www.luogu.com.cn/problem/P2167 为了帮助理解,提供几组样例 样例 输入: 1 3 3 ? ? ? 输出: 26 样例 输入...

mrcrack的博客 384

【OpenClaw企业级智能体实战】第16篇:电商“龙虾”掘金记:用OpenClaw实现小红书/抖音/淘宝全自动矩阵运营(2026实测版)

2026年,OpenClaw(小龙虾)已成为电商运营的核心效率工具——从公众号文案3分钟生成到TikTok爆款视频1小时复刻,从多平台内容同步到自动比价加购,彻底重构了电商运营的工作模式。本文基于真实商业案例(元岳科技、TikTok跨境卖家、淘宝MCP工具),系统拆解电商智能体的落地路径:先详解OpenClaw在电商场景的核心原理与变现模式(代部署、模板售卖、轻定制、内容套利),再提供阿里云/本地双部署方案,完整实现小红书/抖音/淘宝的自动化运营(热点抓取、内容生成、多平台分发、数据分析)。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2278

[BZOJ 1879][SDOI 2009]Bill的挑战 题解(状压DP)

[BZOJ 1879][SDOI 2009]Bill的挑战 Description Solution 1.考虑状压的方式。 方案1:如果我们把每一个字符串压起来,用一个布尔数组表示与每一个字母的匹配关系,那么空间为26^50,爆内存; 方案2:把每一个串压起来,多开一维记录匹配字符,那么空间为nlen26,合法,但不便于状态的设计和转移; 方案3:把每一个串同一个位置的字符放在一起,用...

aua4137的博客 291

Linux 服务器上部署 OpenClaw完整教程

2. 全局安装 OpenClaw 3. 初始化配置 配置模型提供商 方式一:使用配置命令(推荐) 方式二:直接编辑配置文件 在 部分添加: 配置多个模型提供商 如果你使用 Antigravity 本地代理,可以同时配置多个模型: 配置飞书集成 1. 创建飞书应用 访问 飞书开放平台 创建企业自建应用 记录 App ID 和 App Secret 2. 配置应用权限 在飞书开放平台,为应用添加以下权限:重要: 必须使用 长连接(WebSocket) 模式,不要使用 HTTP 回调!在飞书开放

Maynor的博客 5246

【DexGraspNet与多指手抓取算法详解】第四章 抓取检测网络架构设计

图 $G=(V, E)$ 包含两类节点:指尖节点 $V_{tip} = \{v_{tip}^i\}_{i=1}^{N_{finger}}$ 与物体表面节点 $V_{obj} = \{v_{obj}^j\}_{j=1}^{N_{surf}}$。节点特征包含位置 $x \in \mathbb{R}^3$ 、法向 $n \in \mathbb{R}^3$ 及视觉特征 $f \in \mathbb{R}^d$。

VectorShift的博客 440

bzoj1879: [Sdoi2009]Bill的挑战 状压dp

题目传送门 https://www.lydsy.com/JudgeOnline/problem.php?id=1879 题解 我们考虑用\(p[i][j]\)存所有字符串的信息,\(i\)表示字符串的第\(i\)个字符,\(j\)表示英文字母\(a-z\),\(p[i][j]\)用二进制存,例如\(p[1][0]=1100\)表示第一位可以为\(a\)的为第一个字符串和第二个字符串。 然...

anrangyu3600的博客 157

【openGauss实战1】openGauss基于CentOS8的部署

基于openGauss数据库在CentOS8上的安装实践。

IT邦德 3048

[bzoj 1879] [Sdoi2009]Bill的挑战:状压DP,自创数学公式(?)

题意:给N个(1<=N<=15)含小写字母、?的长度不超过50的等长字符串,求有多少个含小写字母的字符串和恰好K个串匹配。?可匹配任意字符。 我写了个奇怪的状压DP并发现一个计算恰在n个集合中出现k次的元素数目的数学公式...... 人生第一次发明数学公式(?),不过不会证......

chrt's blog 668

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【SDOI2009/BZOJ1879】Bill的挑战 状压DP

原题走这里 一看数据范围就知道是状压 首先预处理出s[i][j]即n个字符串的第i位与字母j的匹配状态 设d[i][S]为前i个字母匹配状态为S的情况下的方案 然后对于每个状态枚举下一位是多少就可以了 最后统计一波~~~AC 代码如下: #include &lt;bits/stdc++.h&gt; #define MOD 1000003 using namespace std; ...

CRTorlonia的博客 301

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

BZOJ1879 || 洛谷P2167[SDOI2009]Bill的挑战【状压DP】

Time Limit: 4 Sec Memory Limit: 64 MB Description Input 本题包含多组数据。 第一行:一个整数T,表示数据的个数。 对于每组数据: 第一行:两个整数,N和K(含义如题目表述)。 接下来N行:每行一个字符串。 T ≤ 5,M ≤ 15,字符串长度≤ 50。 题目分析 dp[i][s]dp[i][s]dp[i][s]表示匹配长度为iii,匹配的...

niiick 202

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【BZOJ1879】【SDOI2009】Bill的挑战 [状压DP]

Bill的挑战 Time Limit: 4 SecMemory Limit: 64 MB[Submit][Status][Discuss] Description    Input   第一行:一个整数T,表示数据的个数。   对于每组数据:     第一行:两个整数,N和K(含义如题目表述)。     接下来N行:每行一个字符串。 Out...

weixin_33853827的博客 99

BZOJ1879 [Sdoi2009]Bill的挑战 【状压dp】

题目 输入格式 本题包含多组数据。 第一行:一个整数T,表示数据的个数。 对于每组数据: 第一行:两个整数,N和K(含义如题目表述)。 接下来N行:每行一个字符串。 T ≤ 5,M ≤ 15,字符串长度≤ 50。 输出格式 如题 输入样例 5 3 3 ???r??? ??????? ??????? 3 4 ??????? ?????a? ??????? 3 3 ??????? ?a??...

weixin_30421809的博客 110

BZOJ 1879: [Sdoi2009]Bill的挑战|状压DP

看完题解感觉思路很正常,为什么自己想不出来捏.. F[i][j]F[i][j]表示ii个字符都匹配好了时状态为jj(状压表示)的方案数#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<queue> #include<set> #include<map> #inclu

ws_yzy的博客 944

bzoj 1879: [Sdoi2009]Bill的挑战【状压dp】

石乐志写容斥……其实状压dp就行 设f[i][s]表示前i个字母,匹配状态为s,预处理g[i][j]为第i个字母是j的1~n的集合,转移的时候枚举26个字母转移,最后答案加上正好有k个的方案即可 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int...

weixin_30622181的博客 147

[BZOJ1879][Sdoi2009]Bill的挑战(状压DP)

状压DP。定义状态f[i][S]" role="presentation" style="position: relative;">f[i][S]f[i][S]f[i][S]表示前i" role="presentation" style="position: relative;">iii位,能匹配的字符串集合为S" role="presentation" style="position: rela

女装的你,如此好看! 440

bzoj1879 SDOI2009]Bill的挑战 (状压dp)

Problem 求 nnn 个模式串,能匹配其中 kkk 个的字符串的个数 匹配的含义为 若为 “?” 则与所以字母都匹配,若为字母,则需相同 Solution 首先看的 nnn 很小,然后可能使用状压 dpdpdp 来解决 a[i][j]a[i][j]a[i][j] 表示第 iii 位这 nnn 个模式串在这一位是 ′a′&amp;#x27;a&amp;#x27;′a′+jjj 的程度 f[i]...

生活不易,多才多艺 434

BZOJ.1879.[SDOI2009]Bill的挑战(状压DP)

题目链接 f定义和下面的思路一样,转移时枚举填什么字符,去更新f并算出有哪些字符串可以匹配某个状态(见code吧...)。 预处理出有哪些字符串在第i位可以转移到某个字符c,dp时&一下状态即可。 以下是错误思路(题意理解错,如果是'?'则无论如何都已匹配且要求恰好K个。。): f[i][s]表示当前第i位,匹配的字符串为s集合中的字符串,此时的方案数。 枚举长度、s、每个串,...

weixin_30314813的博客 77

bzoj1879: [Sdoi2009]Bill的挑战(codevs2308)(luoguP2167) 状压dp

唔...懒兔子来写博客了... 点我看题 这题的话...我想了很久但是都不是可行解 刚开始想预处理任意两个串是否可以匹配然后在乱搞,后来发现完全不会写... 然后按照惯例,我会看题解认真的思考... 唔...其实看完题解貌似这题还挺容易的? 我们可以预处理一个数组 g[i,j] 表示 在这 n 个串中前 i 个字符且第 i 个字符匹配为 j (j 是一个字符) 时的一个状态。 这个状...

weixin_34128411的博客 135
0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值