洛谷题解 P3955 【图书管理员】
本题很水,不知我17年是怎么想的,没做出来,结果这次不到10min一遍AC。
其实这道题无需排序直接对每一次询问进行比较就好了(反正数据不大,用不上字符串),具体解析看代码吧。
附代码:
#include<iostream>
using namespace std;
int n,q,nl[1001],ql[1001],qsl[1001];/*n为图书馆里书的数量,q为读者的数量,nl是书的编码,ql是询问的编码,qsl是询问的编码的长度*/
int main()
{
cin>>n>>q;/*输入*/
for(int a=1;a<=n;a++)
{
cin>>nl[a];/*读入书的编码*/
}
for(int a=1;a<=q;a++)
{
int ans=-1,k=1;
cin>>qsl[a];/*读入询问编码的长度*/
cin>>ql[a];/*读入询问的编码*/
for(int c=1;c<=qsl[a];c++)/*处理比较的数位*/
{
k=k*10;
}
for(int b=1;b<=n;b++)/*逐书比较*/
{
if(nl[b]%k==ql[a])/*取书的编码的末qsl[a]位与询问编码比较*/
{
if(ans==-1||(ans>nl[b]))/*判断是否未找到或是否比已找到的小*/
{
ans=nl[b];/*读入已知书编码最小值*/
}
}
}
cout<<ans<<endl;/*输出*/
}
}
题目详见:https://www.luogu.org/problemnew/show/P3955