[传智杯 #4 初赛] 萝卜数据库
2023-12-13 19:08:16
题目描述
花栗鼠很喜欢偷吃生产队的大萝卜,因此花栗鼠科技大学正在研究一种新型的数据库,叫做萝卜数据库。
具体来说,它支持 k(1≤k≤100)?个字段,每个字段名都是整数,里面存储的数值也都是整数。
现在你支持如下操作:
-
向数据库中插入一个记录,它可能只会包含?k?个字段的某一部分。具体的操作格式详见“输入格式”。
-
在数据库中查询有多少条符合条件的记录。
现在你总共有?n?次操作(1≤n≤1000),请你对每个回答操作,输出结果。
输入格式
第一行两个整数 n,k?,意义如题所述。
接下来的若干行,每行代表一次操作,具体如下:
-
1? p?x1???y1?,...,xp??yp??:表示一个插入操作,其中共有?p?个字段,第?i?字段的名字是 xi??,值为 yi??.此处我们保证 1≤xi?≤k,1≤yi?≤1000,并且 xi?,yi??均为整数。
-
2? x?ymin??ymax?:表示一次查询操作,表示查询所有满足 字段?x?的值在?[ymin?,ymax?]?之间的记录有多少个。
输出格式
对于每个查询操作,输出一行一个整数,表示符合条件的记录个数。
输入输出样例
输入 #1复制
4 5 1 2 1 2 2 4 2 2 1 5 1 2 3 5 4 6 2 4 7 8
输出 #1复制
1 0
#include <iostream>
using namespace std;
//定义区
int n,k;
int m,x,y,op;
int a[100005],b[100005],num;
int main()
{
cin>>n>>k;
for(int T=1;T<=n;T++)//循环操作的次数
{
cin>>op;//输入操作类型
if(op==1)//插入操作
{
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y;//x为地址,y为数据
a[++num]=x,b[num]=y;
//数组a储存第num个数据的地址
//数组b则储存第num个数据
}
}
else//询问操作
{
int ans=0,l,r;//l,r 即 ymin,ymax
cin>>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
cout<<ans<<endl;//输出,千万不要忘记换行!
}
}
return 0;
}
文章来源:https://blog.csdn.net/qq_73062949/article/details/134840691
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!