1 条题解

  • 0
    @ 2025-8-24 22:43:00

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar duanfeitong
    未曾忘怀

    搬运于2025-08-24 22:43:00,当前版本为作者最后更新于2022-11-29 09:24:32,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    【题目传送门】

    【题意解释】

    模拟一个数据库,支持两种操作:

    • 往地址 xx 处插入一个数据 yy
    • 询问地址 xx 处所有数据满足在范围 [ymin,ymax][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记录

    谢谢!

    • 1

    信息

    ID
    7352
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者