前言
RE调了好久… 如果该篇题解影响了51nod的运营,我会即时删除 传送门 :
思路
一开始以为是 字典树之类的,反正数据结构
结果看了解题报告说明
v
e
c
t
o
r
vector
vector着实给我开了眼
用
v
e
c
t
o
r
<
l
l
>
g
[
]
[
]
vector<ll> g[][]
vector<ll>g[][] 表示第
i
i
i位为
j
j
j的数
最后通过自带的sort排序即可
但是
v
e
c
o
t
r
<
v
e
c
t
o
r
<
i
n
t
>
>
vecotr<vector<int>>
vecotr<vector<int>> 会RE,具体原因也不清楚(不是默认size=10吗)
CODE
int n,m,t;
vector<ll> g[10][N];
int idx[N];
void cal()
{
int x;cin>>x;
int cnt = 0 ;
int p = x;
while(x!=0)
{
++cnt;
g[cnt][x%10].pb(p);
x/=10;
}
}
void solve()
{
int n;cin>>n;
for(int i=1;i<=n;i++)
cal();
for(int i=0;i<10;i++)
for(int j=0;j<N;j++)
if(!g[i][j].empty()){
sort(g[i][j].begin(),g[i][j].end());
}
cin>>n;
for(int i=1;i<=n;i++){
ll u,v,w;
cin>>u>>v>>w;
if(w>g[u][v].size()){
cout<<-1<<endl;
}else{
cout<<g[u][v][w-1]<<endl;
}
}
}
|