皮卡丘的梦想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
%
%

Hint

Author

bLue

思路:

直接二维树状数组在线查询会TLE.

离线处理,分六十种物品分成六十次去暴力查询就行。

Ac代码:

#include<stdio.h>
#include<string.h>
using namespace std;
struct node
{int x,y,z;
}a[100505];
int tree[100505];
int ans[100505][62];
int n,q;
int lowbit(int x)//lowbit
{return x&(-x);
}
int getsum(int x)//求和求的是比当前数小的数字之和,至于这里如何实现,很简单:int sum=sum(a[i]);
{int sum=0;while(x>0){sum+=tree[x];x-=lowbit(x);}return sum;
}
void add(int x,int c)//加数据。
{while(x<=n){tree[x]+=c;x+=lowbit(x);}
}
int main()
{int t;int kase=0;scanf("%d",&t);while(t--){scanf("%d%d",&n,&q);memset(ans,0,sizeof(ans));for(int i=0;i<q;i++)scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);for(int zhonglei=1;zhonglei<=60;zhonglei++){memset(tree,0,sizeof(tree));for(int i=0;i<q;i++){if(a[i].x==1){if(a[i].z==zhonglei){add(a[i].y,1);}}if(a[i].x==2){if(a[i].z==zhonglei){int sum=getsum(a[i].y)-getsum(a[i].y-1);add(a[i].y,-sum);}}if(a[i].x==3){int sum=getsum(a[i].z)-getsum(a[i].y-1);if(sum>0){ans[i][zhonglei]=1;}}}}printf("Case %d:\n",++kase);for(int i=0;i<q;i++){if(a[i].x==3){int flag=0;for(int j=1;j<=60;j++){if(ans[i][j]==1){if(flag>0)printf(" ");printf("%d",j);flag++;}}if(flag==0)printf("%%");printf("\n");}}}
}

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

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

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

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

    作为水题王者前去水了一波山东理工大学的校赛,这道题一个小细节坑了我2个小时,思路其实很简单,就是线段树单点更新的模板,用一个60的数组标记,如果这个区间内有I种类的化石,那么就是1,否则为0,加入新化 ...

  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程序设计竞赛 E - 九连环

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

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

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

  7. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解

    "科林明伦杯"哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解 萌新又来写题解啦 原题链接 B 减成一 题意:存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一.问最少多 ...

  8. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛)---全题目+题解

    文章目录 A.点对最大值 B.减成一 C.面积 D.扔硬币 E.赛马 F.三角形 G.养花 H.直线 I.字典序 J.最大值 A.点对最大值 链接:https://ac.nowcoder.com/ac ...

  9. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛) F

    F 三角形 链接:https://ac.nowcoder.com/acm/contest/5758/F 来源:牛客网 小明有一根长度为a的木棒,现在小明想将木棒分为多段(每段木棒长度必须为整数), 使 ...

最新文章

  1. 综述|核心开发者全面解读Pytorch内部机制
  2. SDUSTOJ 1801 LIS2(最长上升子序列不同值的数量)
  3. Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并处理异常
  4. php传输html乱码解决
  5. 【Git项目】想成为大咖,先从八卦大咖开始,这个GitHub项目你值得拥有
  6. 笔记28 接受请求的输入 ——处理表单
  7. UI5 control inheritance implementation question
  8. 10、mysql数据表中数据的查询(2)
  9. WinForm窗体之间传值
  10. Python计算前n个自然数的阶乘和
  11. Activity与Intent机制的学习笔记--转自feisky
  12. SpringBoot之idea快捷键
  13. 华为/华三IS-IS单区域配置
  14. display:block jquery.sort()
  15. 数据分析职场路上有困惑?不妨花几分钟来看看...
  16. 用python算股票β系数_请教达人:Stata中计算多只股票月度beta系数的do文件怎么编写?...
  17. 李智慧 - 架构师训练营 第六周
  18. JavaScript:实现将 base64 字符串转换为字节数组算法(附完整源码)
  19. 华为机试真题 Python 实现【分月饼】
  20. 基于Python的离线OCR图片文字识别(三)——支持PDF文件

热门文章

  1. PNAS:大脑区域间耦合的增加和减少会相应增加和减少人类大脑中的振荡活动
  2. Selenium自动化下载文件Firefox配置教程
  3. 登链钱包(一款功能强大的以太坊钱包)完全开源
  4. Android sqlite执行insert,英文单引号报错问题的解决
  5. NOIP历年第二轮入门组真题集合
  6. 关于云开发数据库的使用经验和建议
  7. 计算机CPU工作(多核/缓存)原理
  8. 2014-2020年国有大型商业银行和全国股份制商业银行绿色信贷数据
  9. 风潮唱片-远方的寂静;专辑
  10. 为什么单片机管脚设计成低电平才有效