BZOJ - 3578: GTY的人类基因组计划2
3578: GTY的人类基因组计划2
第一次居然hash被卡了。改了改rd()就A了。
题解:咱给每个人都随机一个数,几个人就是把他们的数异或起来,用set判重。再开一个set记录合法的房间。
1 #include<set> 2 #include<cstdio> 3 #include<bitset> 4 #include<cstdlib> 5 #include<iostream> 6 using namespace std; 7 inline char nc() { 8 static char b[1<<16],*s=b,*t=b; 9 return s==t&&(t=(s=b)+fread(b,1,1<<16,stdin),s==t)?-1:*s++; 10 } 11 inline void read(int &x) { 12 char b = nc(); x = 0; 13 for (; !isdigit(b); b = nc()); 14 for (; isdigit(b); b = nc()) x = x * 10 + b - '0'; 15 } 16 inline int op() { 17 char b = nc(); for (; b != 'C' && b != 'W'; b = nc()); return b == 'C'; 18 } 19 typedef unsigned long long ull; 20 typedef ull bt; 21 int n, m, q, p[100005], c[100005]; 22 const ull ULL_MAX = -1; 23 bt a[100005], b[100005]; 24 inline ull rd() { 25 return ull(rand()) * rand() * rand(); 26 } 27 set < bt > h; 28 set < int > s; 29 int main() { 30 read(n); read(m); read(q); srand(89513255); s.insert(1); 31 for (int i = 1; i <= n; ++i) a[i] = rd(), p[i] = 1; 32 for (int i = 1; i <= n; ++i) b[1] ^= a[i]; c[1] = n; 33 for (int l, r, o, i = 0; i < q; ++i) { 34 o = op(); read(l); read(r); 35 if (o) { 36 if (p[l] == r) continue; 37 s.erase(p[l]); s.erase(r); 38 b[p[l]] ^= a[l]; --c[p[l]]; 39 if (!h.count(b[p[l]])) s.insert(p[l]); 40 b[r] ^= a[l]; ++c[r]; p[l] = r; 41 if (!h.count(b[r])) s.insert(r); 42 } else { 43 int ans = 0; static set < int > :: iterator it; it = s.lower_bound(l); 44 for (; it != s.end() && *it <= r; it = s.lower_bound(l)) { 45 h.insert(b[*it]); ans += c[*it]; s.erase(it); 46 } printf("%d\n", ans); 47 } 48 } 49 return 0; 50 }
转载于:https://www.cnblogs.com/p0ny/p/8243714.html
BZOJ - 3578: GTY的人类基因组计划2相关推荐
- 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞
3578: GTY的人类基因组计划2 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 367 Solved: 159 [Submit][Status ...
- BZOJ3578:GTY的人类基因组计划2(集合hash,STL)
Description GTY召唤了n个人来做实验,GTY家的房子很大,有m个房间一开始所有人都在1号房间里,GTY会命令某人去某个房间等待做实验,或者命令一段区间的房间开始实验,实验会获得一些实验信 ...
- 人类基因组计划20周年!中科院付巧妹团队登Science特刊,从古DNA中一窥人类演化...
1990年,人类基因组计划启动,2001年,长达30亿碱基对的人类基因组草图绘制完成. 在人类基因组公布后的20年里,遗传学的进步飞速发展. 然而,尽管有了这些进步,我们仍然缺乏能力来预测个人的遗传基 ...
- 算法高级(40)-基于分治算法完美解决的人类基因组计划
一.人类基因组计划 人类基因组计划(英语:Human Genome Project, HGP)是一项规模宏大,跨国跨学科的科学探索工程.其宗旨在于测定组成人类染色体(指单倍体)中所包含的30亿个碱基对 ...
- 解码人类基因组:人类基因组计划后17年,X染色体被解码了
全文共1539字,预计学习时长4分钟 图源:unsplash 2003年,人类基因组计划结束了13年长跑,成功测序人体90%以上的基因,但其余部分仍难以解码. 近年来,DNA读取技术不断改善,这些空缺 ...
- 伦琴射线与人类基因组计划(HGP)
我想,国内中学生大都知道德国物理学家伦琴(W.Rontgen 1845-1923)的名子,但是,对其科学成就与深远影响不甚了了. 1895年11月8日,伦琴发现超紫外线电磁辐射现象(也叫X-射线,波长 ...
- 人类基因组计划完成20周年,发现DNA双螺旋结构70周年
美通社消息:2023年4月5日,全球基因测序和芯片技术企业因美纳开启为期一个月的25周年庆祝活动. 自1998年4月在圣迭戈成立以来,因美纳已走过了四分之一世纪的发展历程.如今,因美纳在全球34个国家 ...
- BZOJ 3731: Gty的超级妹子树
Description 我曾在青山之中遇过你, 新竹做杖,鬓插紫茱萸. 跣足踏过无边丝雨, 又拾起燕川雪片片落如席-- Gty神(xian)犇(chong)从来不缺妹子-- 他又来到了一棵妹子树下,发 ...
- BZOJ 3729: Gty的游戏 [伪ETT 博弈论]【学习笔记】
题意: 给定一棵有根树,每个节点有一些石子,每次可以将不多于k的石子移动到父节点 修改一个点的石子数,插入一个点,询问某棵子树是否先手必胜 显然是一个阶梯Nim 每次最多取k个,找规律或者观察式子易发 ...
最新文章
- 语音合成模块 文本转TTS 真人发音 SYN6288
- java+caching+system_浅谈Spring boot cache使用和原理
- class.forname().newInstance()
- Mysql基础--常见的表的约束介绍(一)
- VREP中的力触觉设备接口(CHAI3D)
- 公司java框架让程序员变笨_框架会使程序员变笨吗?
- 简述直方图和柱形图的区别_如何区分直方图与柱形图
- 扩展:js控制台输出,除了 console.log还有哪些?
- CSS设置中文字体无效乱码问题
- MATLAB 读取和显示 bin 文件数据
- ios苹果开发者账号申请流程(公司类型)
- 免手机验证码网站备案
- 解决异常redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
- ES7和 ES8 一览
- [合规性检查方法-Fitness3】基于足迹矩阵的拟合度评估方法
- phpinfo函数的使用
- iPhone14和14pro的区别
- Kafka中的AR,ISR,OSR
- __str__()方法
- LeetCode 169 Majority Element(Majority Voting Algorithm)
热门文章
- 最好的电脑系统_热键被占用怎么办?电脑系统 程序 游戏热键被占用冲突如何解决?...
- 查询已安装rpm包信息
- nginx修改监听端口号8080_Nginx + Tomcat 配置
- greenplum 查询出来的数字加减日期_mysql与时间有关的查询
- logging通过配置文件设置同时输出到终端与文件
- page rank算法
- 怎么提高es服务器的性能,es集群服务器配置规则是怎样的?什么是es集群
- C语言手撸搜索(查找)二叉树---创建,插入,删除
- Python 创建随机名字的文件夹/文件
- 【分享】2019张小龙微信公开课要点整理