作为水题王者前去水了一波山东理工大学的校赛,这道题一个小细节坑了我2个小时,思路其实很简单,就是线段树单点更新的模板,用一个60的数组标记,如果这个区间内有I种类的化石,那么就是1,否则为0,加入新化石的时候很容易想到,就是删除化石的时候,这个点删除了,但是如果这个区间的另外一个点有的话,那么这个区间还是要标记为1的,所以删除的时候要麻烦一点,最后,询问,用另外一个数组来保存这个区间的化石种类的有和无,需要注意的是,已经有了,赋值的时候就不需要把1的赋值取消(坑了两个小时),最后再输出就好了:

皮卡丘的梦想2

Time Limit: 1000MS  Memory Limit: 65536KB
Submit  Statistic

Problem Description

一天,一只住在 501 的皮卡丘决定发奋学习,成为像 LeiQ 一样的巨巨,于是他向镇上的贤者金桔请教如何才能进化成一只雷丘。

金桔告诉他需要进化石才能进化,并给了他一个地图,地图上有 n 个小镇,他需要从这些小镇中收集进化石。

接下来他会进行 q 次操作,可能是打听进化石的信息,也可能是向你询问 l 到 r 之间的进化石种类。

如果是打听信息,则皮卡丘会得到一个小镇的进化石变化信息,可能是引入了新的进化石,也可能是失去了全部的某种进化石。

如果是向你询问,你需要回答他第 l 个小镇到第 r 个小镇之间的进化石种类。

Input

首先输入一个整数 T (1 <= T <= 10),代表有 T 组数据。

每组数据的第一行输入一个整数 n (1 <= n <= 100000) 和一个整数 q (1 <= q <= 100000),分别代表有 n 个小镇,表皮卡丘有 q 次操作。

接下来输入 q 行,对于每次操作,先输入操作类型:

1: 紧接着输入 2 个整数 a(1 <= a <= n), b(1 <= b <= 60),表示第 a 个小镇引入了第 b 种进化石。

2: 紧接着输入 2 个整数 a(1 <= a <= n), b(1 <= b <= 60),表示第 a 个小镇失去了全部第 b 种进化石。

3: 紧接着输入 2 个整数 l, r (1 <= l <= r <= n),表示他想询问从第 l 个到第 r 个小镇上可收集的进化石有哪几种。

Output

对于每组输入,首先输出一行 "Case T:",表示当前是第几组数据。

每组数据中,对于每次操作 3,按编号升序输出所有可收集的进化石。如果没有进化石可收集,则输出一个小豪的百分号 "%"(不要问我为什么,出题就是这么任性)。

Example Input

1
10 10
3 1 10
1 1 50
3 1 5
1 2 20
3 1 1
3 1 2
2 1 50
2 2 20
3 1 2
3 1 10

Example Output

Case 1:
%
50
50
20 50
%
%
#include <iostream>
#include <stdio.h>
#include <string.h>
#define siz 100005
#define lson(x) ((x)<<1)
#define rson(x) (((x)<<1)|1)
using namespace std;
struct node{int is[65];int mx;
};
int p[siz];
node S[siz<<2];
int n,m;
void build(int root,int left,int right){if(left==right){memset(S[root].is,0,sizeof(S[root].is));return ;}int mid=(left+right)>>1;build(lson(root),left,mid);build(rson(root),mid+1,right);memset(S[root].is,0,sizeof(S[root].is));
}
void updata1(int root,int left,int right,int a,int b){if(left==right){// if(a==left)S[root].is[b]=0;return ;}int mid=(left+right)>>1;if(a<=mid){updata1(lson(root),left,mid,a,b);}else{updata1(rson(root),mid+1,right,a,b);}if(S[lson(root)].is[b]==1||S[rson(root)].is[b]==1){S[root].is[b]=1;}else{S[root].is[b]=0;}
}
void updata(int root,int left,int right,int a,int b){if(a>=left&&a<=right){// cout<<b<<endl;S[root].is[b]=1;}if(left==right){if(a==left){S[root].is[b]=1;}return ;}int mid=(left+right)>>1;if(a<=mid){updata(lson(root),left,mid,a,b);}else{updata(rson(root),mid+1,right,a,b);}
}
int ff[65];
void query(int root,int left,int right,int l,int r){if(left==l&&right==r){for(int i=1;i<=60;i++){if(ff[i]!=1)ff[i]=S[root].is[i];}return ;}int mid=(left+right)>>1;// cout<<mid<<" "<<l<<" "<<r<<endl;if(r<=mid){query(lson(root),left,mid,l,r);}else if(l>=mid+1){query(rson(root),mid+1,right,l,r);}else{query(lson(root),left,mid,l,mid);query(rson(root),mid+1,right,mid+1,r);}
}void solve(){build(1,1,n);while(m--){memset(ff,0,sizeof(ff));int q,a,b;scanf("%d %d %d",&q,&a,&b);if(q==1){updata(1,1,n,a,b);}else if(q==2){updata1(1,1,n,a,b);}else{query(1,1,n,a,b);int flag=1;for(int i=1;i<=60;i++){if(ff[i]!=0){if(flag){printf("%d",i);flag=0;}elseprintf(" %d",i);}}if(flag){//puts("%");printf("%%\n");}elseprintf("\n");}}
}
int main()
{int t;scanf("%d",&t);for(int i=1;i<=t;i++){printf("Case %d:\n",i);scanf("%d%d",&n,&m);solve();}return 0;
}

师创杯”山东理工大学第九届ACM程序设计竞赛(网络同步赛)--I皮卡丘的梦想2相关推荐

  1. “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 F.校赛~校赛~【思维+规律题】

    校赛~校赛~ Time Limit: 1000MS  Memory Limit: 65536KB Submit  Statistic Problem Description SDUT 的校赛是从 20 ...

  2. “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 I.皮卡丘的梦想2【树状数组】水题

    皮卡丘的梦想2 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 一天,一只住在 501 的皮 ...

  3. “师创杯”山东理工大学第九届ACM程序设计竞赛 热身赛 E.上色的纱雾【二分+贪心】

    上色的纱雾 Time Limit: 1000MS  Memory Limit: 65536KB Submit  Statistic Problem Description 纱雾画画功力首屈一指,现在她 ...

  4. “华为杯”山东理工大学第十一届ACM程序设计竞赛(正式赛)

    猜先 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 小 A 和小 B 最近开始学习下 ...

  5. 九连环(“华为杯”山东理工大学第十一届ACM程序设计竞赛(正式赛)网络同步赛)

    Problem Description 不知道大家有没有玩过一个叫做 九连环 的玩具,如下图所示. 如果你不了解九连环,那玄黄就带你领略九连环的奥妙:  九连环是我国传统的民间智力玩具,玩具上面有九个 ...

  6. “华为杯”山东理工大学第十一届ACM程序设计竞赛 E - 九连环

    Problem Description 不知道大家有没有玩过一个叫做 九连环 的玩具,如下图所示. 如果你不了解九连环,那玄黄就带你领略九连环的奥妙:  九连环是我国传统的民间智力玩具,玩具上面有九个 ...

  7. 2022年 文远知行杯 GDUT 第十六届程序设计竞赛(同步赛) 部分题解

    今年做出来的题还没去年多,看来是题目质量高了(我又变菜了). 同步赛地址:文远知行杯广东工业大学第十六届程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJB B ...

  8. 2016河南省第九届ACM程序设计竞赛【正式赛真题】

    A题:表达式求值 时间限制: 1000 ms  |  内存限制: 65535 KB 描述 假设表达式定义为:1. 一个十进制的正整数 X 是一个表达式.2. 如果 X 和 Y 是 表达式,则 X+Y, ...

  9. 第十八届西南科技大学ACM程序设计竞赛(同步赛)签到题 6题

    文章目录 B 为欢几何 F 青山隐隐,败叶萧萧 G 几番烟雾,只有花难护 H 岸风翻夕浪,舟雪洒寒灯 L 夜暗方显万颗星,灯明始见一缕尘 M 劝君终日酩酊醉,酒不到刘伶坟上土 B 为欢几何 链接:ht ...

最新文章

  1. 爬虫之selenium替换user-agent
  2. linux虚拟机上不了王,虚拟机上安装Linux时出现的问题及解决方法
  3. oracle查找外键表
  4. 机器学习之数据预处理——归一化,标准化
  5. 数据分析常用Python库:数值计算、可视化、机器学习等领域
  6. Sqoop export(Hive to MySQL) 的一些 reference
  7. 耶鲁 计算机科学,耶鲁大学计算机科学专业排名第20(2020年USNEWS美国排名)
  8. 洛谷——P2192 HXY玩卡片
  9. UVA10325 The Lottery【GCD+LCM】
  10. Lightroom Classic 教程,如何在 Lightroom 中风格化照片?
  11. Grasshopper Essential Training Grasshopper基础教程 Lynda课程中文字幕
  12. LR.JAVA报表设计器,快速点亮报表设计技能
  13. excel表格怎么换行?单元格内换行的4个方法
  14. 12月17号英语学习
  15. ppt能转为html文件吗,请问如何能够实现将PPT分页转成HTML文件?
  16. fld to xml and xml to fld
  17. 让文化与大数据 离婚吧
  18. iMazing如何恢复苹果手机被下架App软件应用
  19. MODBUS调试工具(modscan32)使用说明
  20. Minimun Snap的matlab实现(含代码)

热门文章

  1. 搜狗王小川“吐槽”李彦宏,称其活在平行宇宙
  2. 美狐人脸识别SDK技术,人脸检测SDK技术达到实时美颜滤镜的效果
  3. Android实现素材擦除功能
  4. Data-centered Style(以数据为中心的体系结构风格)
  5. 在下列html中可以产生复选框,电科18秋《网页设计与制作》在线作业2答案
  6. DevExpress ComboBoxEdit 设置字体
  7. Revit二次开发——字体的问题
  8. 微信小程序 - 发送视频弹幕
  9. 魔百盒CM201-2-YS易视腾代工-任意芯片-免拆机-刷机固件及教程
  10. 念数字(PTA题库)