[bzoj5285][Hnoi2018]寻宝游戏【复杂度分析】
【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=5285
【题解】
考虑最后一个影响一个二进制位的数。
如果出现“&0”,那么之前所有的操作都不能影响它。同理“|1”也是。
另外两种状态“&1”,“|0”不会影响前面的状态。
所以从后往前枚举每一位的运算符。如果是“&”所有为0的位置不用再做下去,是“|”所有为1的位置不用做下去。所以一次询问的复杂度是O(N∗M)O(N∗M)O(N*M)的。
总复杂度:O(N∗M∗Q)O(N∗M∗Q)O(N*M*Q)。
# include <bits/stdc++.h>
# define N 1010
# define M 5010
# define P 1000000007
using namespace std;
int read(){int tmp=0, fh=1; char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') fh=-1; ch=getchar();}while (ch>='0'&&ch<='9'){tmp=tmp*10+ch-'0'; ch=getchar();}return tmp*fh;
}
int n,m,q,ans;
char s[N][M],t[M];
int use[N][M],mul[N];
int solve(int k, int cnt){if (cnt==0) return mul[k];if (k==0){for (int i=1; i<=cnt; i++)if (t[use[k][i]]=='1')return 0;return 1;}int nex=0, flag=true, num=0;for (int i=1; i<=cnt; i++){ // ^if (s[k][use[k][i]]=='0'){if (t[use[k][i]]=='1'){flag=false; break;}}else use[k-1][++nex]=use[k][i];}if (flag) num=num+solve(k-1,nex);nex=0, flag=true;for (int i=1; i<=cnt; i++){ // vif (s[k][use[k][i]]=='1'){if (t[use[k][i]]=='0'){flag=false; break;}}else use[k-1][++nex]=use[k][i];}if (flag) num=(num+solve(k-1,nex))%P;return num;
}
int main(){n=read(), m=read(); q=read();mul[0]=1;for (int i=1; i<=n; i++)mul[i]=mul[i-1]*2%P;for (int i=1; i<=n; i++)scanf("\n%s",s[i]+1);while (q--){scanf("\n%s",t+1);for (int i=1; i<=m; i++) use[n][i]=i;ans=solve(n,m);printf("%d\n",ans);}return 0;
}
[bzoj5285][Hnoi2018]寻宝游戏【复杂度分析】相关推荐
- bzoj 5285: [Hnoi2018]寻宝游戏
Description Solution 把输入的 \(n\) 个二进制数看作一个大小为 \(n*m\) 的矩阵 把每一列压成一个二进制数,其中最高位是最下面的元素 然后就有了 \(m\) 个二进制数 ...
- HNOI2018寻宝游戏
https://www.luogu.org/problemnew/show/P4424 题解 我们首先按位考虑. 如果有一位最终的结果为1,那么我们可以把树的序列看成一个二进制数,先出现的在底位,后出 ...
- 2021年第一季度中国电竞行业网络关注度分析报告
新浪游戏联合新浪舆情通推出<中国电竞行业网络关注度分析报告·2021年Q1版>,本报告通过大数据视角透视2021年第一季度中国电竞行业发展现状,对中国电竞行业热度.细分行业信息传播规律.人 ...
- 基于Python语言的PUBG游戏数据可视化分析系统
[success]写于2019年大作业[/success] 博客链接:https://www.iamzlt.com/?p=299 代码链接请到博客链接内查看. 摘要 随着网络技术的兴起和普及,网络游戏 ...
- 06:寻宝_第1集:寻宝游戏!
06:寻宝 Let's kick things off with something a bit unusual: a virtual scavenger hunt. 让我们从一些不寻常的事情开始:虚 ...
- 学习:关于游戏用户流失分析方法
三步骤: 流失分析 游戏次日流失分析 游戏中长期流失分析 part 1 流失分析 定位流失用户,挖掘流失用户流失前的最后行为,从而发现导致这类流失的原因 需求开发的重要前提: 1. 与需求方(运营)明 ...
- 几十款游戏的简单分析
文章目录 一. 介绍 二. 影响游戏体验的因素 三. 游戏能爆火的因素 1.影响游戏爆火因素的排名 2.玩游戏的两种经典心理 3.经典案例分析 Qq农场 植物大战僵尸 水果忍者 召唤神龙 羊了个羊 4 ...
- 【每日一学】复杂度分析
文章目录 目标 什么是数据结构 复杂度分析 目标 建立时间复杂度.空间复杂度意识,写出高质量的代码 能够设计基础架构 提高编程技能 训练逻辑思维 什么是数据结构 广义:一组数据的存储结构 | 操作数据 ...
- 卷积神经网络的复杂度分析
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | Michael Yuan@知乎(已授权) 来源 | htt ...
最新文章
- open的O_DIRECT选项
- 使用机器学习方法预测IBM员工流失数据模型
- bean加载时调用@value时会出现空指针异常_SpringMVC全局异常处理机制
- android 颜色填充工具栏,Android工具栏颜色未由colorPrimary设置
- WPF绘制光滑连续贝塞尔曲线
- 关于开发中的常用手段(个人建议)
- 【HDU - 3081】Marriage Match II(网络流最大流,二分+网络流)
- 类的static成员并用其实现一个单例模式
- Android 2019最新面试实战总结
- 当年黄光裕有多么霸气?一张合影令人震撼,现任首富王健林成小弟
- C#:实现Euclidean distance欧氏距离算法(附完整源码)
- 恢复Surface Pro 高级电源设置里各类配置项提高外接电源模式下的性能(外接电源莫名很卡,拔掉电源又正常,实则被降频)
- 一维数组和二维数组的定义及用法
- 用Python制作一条五彩蟒蛇
- 如何经营好一家公司?这些管理要点请收下
- [微信] 微信商户号 资金解决方案 自动提现 关闭
- 移动宽带没有公网IP?不,它有公网IPv6,你只需要……
- Java内部锁(synchronized)中类锁和对象锁
- Paddle2.0让你成为诗词大师-PaddlePoetry
- XCTF攻防世界BABYRE逆向
热门文章
- 班级优化大师显示网络或服务器异常,希沃班级优化大师常见问题总汇
- 计算机版音乐教学反思,音乐教学反思(通用3篇)
- Python - GPA的计算
- 专访天冕科技许文彬:以超5000万用户为基础,构建完善的隐私计算数据应用生态
- 什么是非同质化代币(non-fungible token)?关于NFT你需要知道的一切
- elasticsearch-数据聚合
- session Storage
- mixly 添加micropython_Mixly For Mac
- 记录个tomcat启动报错问题,Unable to process Jar entry
- 解决Python使用playsound播放音频报错:在用引号括起的字符串不能指定额外的字符