P8843 萝卜数据库 题解
duanfeitong · · 题解
【题目传送门】
【题意解释】
模拟一个数据库,支持两种操作:
- 往地址
x 处插入一个数据y 。 - 询问地址
x 处所有数据满足在范围[ymin , ymax] 的有多少个。
【题目分析】
我们可以使用两个数组来模拟这个数据库(以代替复杂一些的vector),一个数组表示地址,一个数组表示数据。
【代码展示】
#include<bits/stdc++.h>
using namespace std;
//定义区
int n,k;
int m,x,y,op;
int a[100005],b[100005],num;
int main()
{
scanf("%d%d",&n,&k);
for(int T=0;T<n;T++)
{
scanf("%d",&op);//输入操作类型
if(op==1)//插入操作
{
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);//x为地址,y为数据
a[++num]=x,b[num]=y;
//数组a储存第num个数据的地址
//数组b则储存第num个数据
}
}
else//询问操作
{
int ans=0,l,r;//l,r 即 ymin,ymax
scanf("%d%d%d",&m,&l,&r);
for(int i=1;i<=num;i++)//遍历
if(a[i]==m)//如果第i个数的地址是所询问的地址
if(l<=b[i]&&b[i]<=r)//并且第i个数满足限制条件
ans++;//答案+1
printf("%d\n",ans);//输出,千万不要忘记换行!
}
}
return 0;//The end
}
//MXX 2022/11/29
AC记录
谢谢!