Description

click me


Solution

对于结果的每一位iii考虑如果该位在第j" role="presentation" style="position: relative;">jjj次操作上为111,那么bi" role="presentation" style="position: relative;">bibib_i的第jjj位为1" role="presentation" style="position: relative;">111,否则为000。
对于一种操作,如果第j" role="presentation" style="position: relative;">jjj次操作为与操作,那么xxx等于1" role="presentation" style="position: relative;">111,否则为000。
如果最终结果的第i" role="presentation" style="position: relative;">iii位上是111,那么x&lt;bi" role="presentation" style="position: relative;">x<bix<bix,否则x≥bix≥bix\ge b_i。
然后排序后直接处理每个询问求出xx<script type="math/tex" id="MathJax-Element-994">x</script>的范围即可。


Code

/************************************************* Au: Hany01* Date: Apr 20th, 2018* Prob: [BZOJ5285][HNOI2018] 寻宝游戏* Email: hany01@foxmail.com
************************************************/#include<bits/stdc++.h>using namespace std;typedef long long LL;
typedef pair<int, int> PII;
#define File(a) freopen(a".in", "r", stdin), freopen(a".out", "w", stdout)
#define rep(i, j) for (register int i = 0, i##_end_ = (j); i < i##_end_; ++ i)
#define For(i, j, k) for (register int i = (j), i##_end_ = (k); i <= i##_end_; ++ i)
#define Fordown(i, j, k) for (register int i = (j), i##_end_ = (k); i >= i##_end_; -- i)
#define Set(a, b) memset(a, b, sizeof(a))
#define Cpy(a, b) memcpy(a, b, sizeof(a))
#define x first
#define y second
#define pb(a) push_back(a)
#define mp(a, b) make_pair(a, b)
#define ALL(a) (a).begin(), (a).end()
#define SZ(a) ((int)(a).size())
#define INF (0x3f3f3f3f)
#define INF1 (2139062143)
#define Mod (1000000007)
#define debug(...) fprintf(stderr, __VA_ARGS__)
#define y1 wozenmezhemecaiatemplate <typename T> inline bool chkmax(T &a, T b) { return a < b ? a = b, 1 : 0; }
template <typename T> inline bool chkmin(T &a, T b) { return b < a ? a = b, 1 : 0; }inline int read()
{register int _, __; register char c_;for (_ = 0, __ = 1, c_ = getchar(); c_ < '0' || c_ > '9'; c_ = getchar()) if (c_ == '-') __ = -1;for ( ; c_ >= '0' && c_ <= '9'; c_ = getchar()) _ = (_ << 1) + (_ << 3) + (c_ ^ 48);return _ * __;
}const int maxn = 1005, maxm = 5005;int n, m, q, pos[maxm];//For bitset
bitset<maxm> s[maxn], S;bool operator < (bitset<maxn> A, bitset<maxn> B) {For(i, 1, n) if (A[i] ^ B[i])if (A[i]) return 0; else return 1;return 0;
}struct BB
{bitset<maxn> b;int id, val;inline bool operator < (const BB A) const { return b < A.b; }inline void getval() {val = 0;For(i, 1, n) val = (val * 2 % Mod + b[i]) % Mod;}}b[maxm];inline bool getbit()
{register char c;for (c = getchar(); !isdigit(c); c = getchar()) ;return c ^ 48;
}bitset<maxm> getbits()
{static bitset<maxm> bt;Fordown(i, m, 1) bt[i] = getbit();return bt;
}
int main()
{
#ifdef hany01File("bzoj5285");
#endif//InitInputn = read(), m = read(), q = read();For(i, 1, n) s[i] = getbits();Get array b, which stands for if the i_th bit is 0 or 1, the value of x should < or > b[i], and sort them.For(i, 1, m) {For(j, 1, n) b[i].b[n - j + 1] = s[j][i];b[i].id = i, b[i].getval();}sort(b + 1, b + 1 + m);For(i, 1, m) pos[b[i].id] = i;//Answer questionspos[m + 1] = m + 1;For(i, 1, n) b[m + 1].b[i] = 1;b[m + 1].getval(), ++ b[m + 1].val;while (q --){S = getbits();register int Min = m + 1, Max = 0;For(i, 1, m) S[i] ? chkmin(Min, pos[i]) : chkmax(Max, pos[i]);if (Min <= Max) puts("0");else printf("%d\n", (b[Min].val - b[Max].val + Mod) % Mod);}return 0;
}
//红颜未老恩先断,斜倚薰笼坐到明。
//    -- 白居易《后宫词》

【BZOJ5285】【HNOI2018】寻宝游戏相关推荐

  1. [bzoj5285][Hnoi2018]寻宝游戏【复杂度分析】

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5285 [题解] 考虑最后一个影响一个二进制位的数. 如果出现"&0 ...

  2. bzoj 5285: [Hnoi2018]寻宝游戏

    Description Solution 把输入的 \(n\) 个二进制数看作一个大小为 \(n*m\) 的矩阵 把每一列压成一个二进制数,其中最高位是最下面的元素 然后就有了 \(m\) 个二进制数 ...

  3. HNOI2018寻宝游戏

    https://www.luogu.org/problemnew/show/P4424 题解 我们首先按位考虑. 如果有一位最终的结果为1,那么我们可以把树的序列看成一个二进制数,先出现的在底位,后出 ...

  4. SDOI2015寻宝游戏 dfs序+set

    SDOI2015寻宝游戏 好像是一道虚树入门题? 虚树???不会不会我弱死了.. Solution: 关键点间的最小路径,就是在保证尽量少走重复路的前提下走出来的一条经过所有关键点的路径. 基于这个思 ...

  5. 河北工业大学c语言寻宝游戏,计算机技术基础(c语言)课程设计寻宝游戏.doc

    计算机技术基础(c语言)课程设计寻宝游戏 计算机技术基础(c语言)课程设计 寻宝游戏 #include #include #include #include #include #define ESC ...

  6. hdu 6289 寻宝游戏

    寻宝游戏 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Sub ...

  7. 寻宝游戏 - 利用iBeacon特性设计的iOS线下寻宝游戏 - 物联网小游戏

    寻宝游戏 - 利用iBeacon特性设计的iOS线下寻宝游戏 作者简介 科科香,程序员 方向:IoT,方案集成,喜好各种新鲜东东 转载请注明出处 iBeacon简介 iBeacon(下面简称Beaco ...

  8. minecraft_使用MCDungeon将地牢,废墟和寻宝游戏添加到您的Minecraft世界中

    minecraft If you've grown tired of exploring the vanilla Minecraft world and the thrill of stumbling ...

  9. 许嵩续约太合音乐集团 携手开启《寻宝游戏》

    7月24日,许嵩<寻宝游戏>发布会暨续约仪式在北京顺利召开.在推出新专辑<寻宝游戏>之际,也宣布续约太合音乐集团,启动未来"无限"可能. 许嵩畅谈新专< ...

  10. 【BZOJ 3991】 [SDOI2015]寻宝游戏

    3991: [SDOI2015]寻宝游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit: 251 Solved: 137 [Submit][Status ...

最新文章

  1. Oracle-ORA-01722 invalid number错误
  2. 联想笔记本Win10 F1-F12失效的解决方法
  3. 图解Numpy的tile函数
  4. Outlier Detection for Improved Data Quality and Diversity in Dialog Systems-学习笔记
  5. Forward团队-爬虫豆瓣top250项目-模块开发过程
  6. beego2---入门
  7. python循环结构高一信息技术有限公司_Python之循环结构
  8. 现代通信原理5.2:带通信号的(复包络)低通表示
  9. 奔跑吧恐龙-JAVA从入门到精通
  10. 微信小程序JSON数据提取问题
  11. 【C语言】初识C语言(上篇)
  12. 本体论:Gene Ontology (基因本体)
  13. codeforces 427C tarjan模板题
  14. 数据库修改表中的数据(SqlServer)
  15. Linux中的source
  16. Fastapi + deta 部署一个简单的笔记应用
  17. android build.prop
  18. LeetCode 力扣 538. 把二叉搜索树转换为累加树 convertBstToGreaterTree538树
  19. 编译原理|递归下降分析子程序
  20. 关于GCD的一些宏定义

热门文章

  1. GO Web编程---网上书店(1)
  2. 8.单链表实现与反转
  3. python中import 模块的路径问题
  4. UE接入过程(LTE和NR)
  5. 一线明星纷纷失业,数据告诉你今年的演员有多难
  6. 相信我,我们离成为废物阶级不远了!
  7. c语言转换字符类型,C语言基础之数据类型转换
  8. Visual studio 无法打开源文件的问题或系统找不到指定文件
  9. Django之全局配置-ALLOWED_HOSTS、LOGGING及多个子应用管理
  10. 【Windows Server】由于没有远程桌面授权服务器可以提供许可证