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相关推荐

  1. 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞

    3578: GTY的人类基因组计划2 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 367  Solved: 159 [Submit][Status ...

  2. BZOJ3578:GTY的人类基因组计划2(集合hash,STL)

    Description GTY召唤了n个人来做实验,GTY家的房子很大,有m个房间一开始所有人都在1号房间里,GTY会命令某人去某个房间等待做实验,或者命令一段区间的房间开始实验,实验会获得一些实验信 ...

  3. 人类基因组计划20周年!中科院付巧妹团队登Science特刊,从古DNA中一窥人类演化...

    1990年,人类基因组计划启动,2001年,长达30亿碱基对的人类基因组草图绘制完成. 在人类基因组公布后的20年里,遗传学的进步飞速发展. 然而,尽管有了这些进步,我们仍然缺乏能力来预测个人的遗传基 ...

  4. 算法高级(40)-基于分治算法完美解决的人类基因组计划

    一.人类基因组计划 人类基因组计划(英语:Human Genome Project, HGP)是一项规模宏大,跨国跨学科的科学探索工程.其宗旨在于测定组成人类染色体(指单倍体)中所包含的30亿个碱基对 ...

  5. 解码人类基因组:人类基因组计划后17年,X染色体被解码了

    全文共1539字,预计学习时长4分钟 图源:unsplash 2003年,人类基因组计划结束了13年长跑,成功测序人体90%以上的基因,但其余部分仍难以解码. 近年来,DNA读取技术不断改善,这些空缺 ...

  6. 伦琴射线与人类基因组计划(HGP)

    我想,国内中学生大都知道德国物理学家伦琴(W.Rontgen 1845-1923)的名子,但是,对其科学成就与深远影响不甚了了. 1895年11月8日,伦琴发现超紫外线电磁辐射现象(也叫X-射线,波长 ...

  7. 人类基因组计划完成20周年,发现DNA双螺旋结构70周年

    美通社消息:2023年4月5日,全球基因测序和芯片技术企业因美纳开启为期一个月的25周年庆祝活动. 自1998年4月在圣迭戈成立以来,因美纳已走过了四分之一世纪的发展历程.如今,因美纳在全球34个国家 ...

  8. BZOJ 3731: Gty的超级妹子树

    Description 我曾在青山之中遇过你, 新竹做杖,鬓插紫茱萸. 跣足踏过无边丝雨, 又拾起燕川雪片片落如席-- Gty神(xian)犇(chong)从来不缺妹子-- 他又来到了一棵妹子树下,发 ...

  9. BZOJ 3729: Gty的游戏 [伪ETT 博弈论]【学习笔记】

    题意: 给定一棵有根树,每个节点有一些石子,每次可以将不多于k的石子移动到父节点 修改一个点的石子数,插入一个点,询问某棵子树是否先手必胜 显然是一个阶梯Nim 每次最多取k个,找规律或者观察式子易发 ...

最新文章

  1. 语音合成模块 文本转TTS 真人发音 SYN6288
  2. java+caching+system_浅谈Spring boot cache使用和原理
  3. class.forname().newInstance()
  4. Mysql基础--常见的表的约束介绍(一)
  5. VREP中的力触觉设备接口(CHAI3D)
  6. 公司java框架让程序员变笨_框架会使程序员变笨吗?
  7. 简述直方图和柱形图的区别_如何区分直方图与柱形图
  8. 扩展:js控制台输出,除了 console.log还有哪些?
  9. CSS设置中文字体无效乱码问题
  10. MATLAB 读取和显示 bin 文件数据
  11. ios苹果开发者账号申请流程(公司类型)
  12. 免手机验证码网站备案
  13. 解决异常redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
  14. ES7和 ES8 一览
  15. [合规性检查方法-Fitness3】基于足迹矩阵的拟合度评估方法
  16. phpinfo函数的使用
  17. iPhone14和14pro的区别
  18. Kafka中的AR,ISR,OSR
  19. __str__()方法
  20. LeetCode 169 Majority Element(Majority Voting Algorithm)

热门文章

  1. 最好的电脑系统_热键被占用怎么办?电脑系统 程序 游戏热键被占用冲突如何解决?...
  2. 查询已安装rpm包信息
  3. nginx修改监听端口号8080_Nginx + Tomcat 配置
  4. greenplum 查询出来的数字加减日期_mysql与时间有关的查询
  5. logging通过配置文件设置同时输出到终端与文件
  6. page rank算法
  7. 怎么提高es服务器的性能,es集群服务器配置规则是怎样的?什么是es集群
  8. C语言手撸搜索(查找)二叉树---创建,插入,删除
  9. Python 创建随机名字的文件夹/文件
  10. 【分享】2019张小龙微信公开课要点整理