naseele @ 2023-12-13 15:52:37
Subtask #0 和Subtask #1分别过了一个评测点,其他都是紫色
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,q;//柜子个数和询问次数
scanf("%d %d",&n,&q);
int function_select = 0;
vector<vector<int>>cabinet(n);//初始化n行,具体多少列到时候再分配
auto it_b = cabinet.begin();
auto it_eachrow_b = it_b->begin();
int i,j,k;
while(q--)
{
scanf("%d",&function_select);
switch (function_select)
{
case 1:
scanf("%d %d %d",&i,&j,&k);
//此行未分配空间或此行空间少于j个
if(cabinet[i-1].size() == 0||cabinet[i-1].size() < j)
{
cabinet[i-1].resize(j);
}
if (k != 0)
{
//cabinet[i-1].resize(j);
cabinet[i-1][j-1] = k;
}
else if(cabinet[i-1].size() >= j)
{
cabinet[i-1].erase(it_eachrow_b + j-1);
}
break;
default:
scanf("%d %d",&i,&j);
if(cabinet[i-1].size() == 0||cabinet[i-1].size() < j)
{
continue;
}
else
{
cout << cabinet[i-1][j-1] << endl;
}
break;
}
}
return 0;
}
by luoguandy @ 2023-12-13 16:42:50
《都是紫色》
by szlh_XJS @ 2024-02-14 14:25:51
试试我的,和你的想法差不多
#include<bits/stdc++.h>
using namespace std;
int n,q;
int main()
{
cin>>n>>q;
vector<map<int,int > >nn(n+1);
int a,b,c,d;
for(int i=1;i<=q;i++)
{
cin>>a;
if(a==1)
{
cin>>b>>c>>d;
nn[b][c]=d;
}
else
{
cin>>b>>c;
cout<<nn[b][c]<<endl;
}
}
return 0;
}
@naseele