社区讨论

这道题的题解一时间复杂度不会超了吗?q假如取100000 ,s取10的9次方

P3613【深基15.例2】寄包柜参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo8o3n1x
此快照首次捕获于
2023/10/27 21:47
2 年前
此快照最后确认于
2023/10/27 21:47
2 年前
查看原帖
CPP
#include <iostream>
#include <vector>
using namespace std;
const int MAX = 100005;
struct node
{
	//s用来记录desk[i]的元素个数,表示第i个柜子已存s次物品 
	//num表示第i个柜子的第num个格子存入一个物品
	//w表示该格子存入的物品 
	vector<int> num,w;//用vector动态数组节省内存,以防MLE 
	int s = 0;
} desk[MAX];
int main()
{
	int n,q;
	cin>>n>>q;
	while(q--)
	{
		int x,a,b,c;
		cin>>x;
		if(x == 1)
		{
			cin>>a>>b>>c;
			desk[a].s++; //第a个柜子存入物品
			desk[a].num.push_back(b);//第b个格子中 
			desk[a].w.push_back(c);//存入物品c 
		}
		else
		{
			cin>>a>>b;
			for(int i = desk[a].s - 1;i >= 0;i--)//从后往前,因为格子存放会有更新 
			{
				if(desk[a].num[i] == b)//如果查询到该柜子的格子 
				{
					cout<<desk[a].w[i]<<endl;//输出该格子内的物品 
					break;//因此时是最新的存放情况,所以有解后需要直接退出查询 
				}
			}
		}
	} 
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...