首页 > 其他分享 >「NOIP2017_Junior」图书管理员

「NOIP2017_Junior」图书管理员

时间:2024-07-31 18:54:08浏览次数:11  
标签:NOIP2017 string int cin 管理员 size Junior 图书 cmp

题目

题目描述

图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数。 每位借书的读者手中有一个需求码,这个需求码也是一个正整数。如果一本书的图 书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。

小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他需要的书,请输出−1。

格式

输入格式

第一行,包含两个正整数 n,q,以一个空格分开,分别代表图书馆里书的数量和读者的数量。

接下来的 n 行,每行包含一个正整数,代表图书馆里某本书的图书编码。

接下来的 q 行,每行包含两个正整数,以一个空格分开,第一个正整数代表图书馆 里读者的需求码的长度,第二个正整数代表读者的需求码。

输出格式

q 行,每行包含一个整数,如果存在第 i 个读者所需要的书,则在第 i 行输出第 i 个读者所需要的书中图书编码最小的那本书的图书编码,否则输出−1。

样例

Input1
5 5 
2123 
1123 
23 
24 
24 
2 23 
3 123 
3 124 
2 12 
2 12
 Output1
23 
1123 
-1 
-1 
-1

思路

众所周知

   找最小&&没有被排序 一般是需要排序的

难点

   使用函数sort()+cmp Or 自己选择一种排序方法

方法

1.sort+cmp

Sort是一个系统函数其内置算法是快速排序时间复杂度为 n*log2n

但它却是一个不稳定的的算法(后续可通过自定义函数改变这一现状)

int a[105];
cin>>a[1]>>a[2]>>a[3];
sort(a+1,a+4);
cout<<a[1]<<" "<<a[2]<<" "<<a[3]<<" ";
in:
4 7 2
out:
2 4 7

 可以看出sort默认是升序排列,而用自定义函数cmp可以做到降序排列。

bool cmp(int a,int b) {
    return a > b;
}
——————————————————————————main——————————————
int a[105];
cin>>a[1]>>a[2]>>a[3];
sort(a+1,a+4,cmp);
cout<<a[1]<<" "<<a[2]<<" "<<a[3]<<" ";
in:
4 7 2
out:
7 4 2

 Cmp不仅可以用在整型还可以用在字符串(string),字符(char),浮点数(double,float

),给构体等;

而本题适合用字符串来实现题目所要求的 && 不超时 && 简便;

2.本代码中使用的系统函数

string s;
cin>>s;
int l=s.size();
cout<<l;
in:
yijiansanlian
out:
13

.size()  用来计算字符串的长度;

string s;
cin>>s;
string l=s.substr(2,4);
cout<<l;
in:
yijiansanlian
out:
jian

s .substr(x,y)   用于计算字符串从第x+1个字符开始y个字符的子字符串;

代码

string book[1001];
bool cmp(string a, string b) {
    if (a.size() != b.size()) {
        return a.size() < b.size();
    }
    return a < b;
}
——————————————————main————————————————————————
	freopen("librarian.in","r",stdin);
	 freopen("librarian.out","w",stdout);
    int n, q;
    cin >> n >> q;
    for (int i = 0; i < n; i++) {
        cin >> book[i];
    }
    sort(book, book + n, cmp);
    for (int i = 0; i<=q-1; i++) {
        int len;
        string num;  
        cin >> len >> num;
        bool f = false;
        for (int j = 0; j<=n; j++){
            if (book[j].size() < len) {
                continue;
            } else {
                if (book[j].substr( book[j].size() - len, len) == num) {
                    cout << book[j] << endl;
                    f = true; 
                    break; 
                }
            }
        }
        if (f==0){
            cout << -1 << endl;
        }
    }
    return 0;
}

标签:NOIP2017,string,int,cin,管理员,size,Junior,图书,cmp
From: https://blog.csdn.net/llamaxfs111/article/details/140804445

相关文章

  • Django 管理员:一对一关系作为内联?
    我正在为satchmo应用程序整理管理员。Satchmo使用OneToOne关系来扩展基本模型Product,我想在一页上编辑所有内容。是否可以将OneToOne关系作为内联关系?如果没有,将一些字段添加到管理员的给定页面并最终保存到OneToOne关系中的最佳方法是什么?例如:clas......
  • P3957[NOIP2017普及组]跳房子
    https://www.luogu.com.cn/problem/P3957https://class.51nod.com/Html/Textbook/ChapterIndex.html#textbookId=126&chapterId=337显然,但是维护滑动窗口有技巧,不能每次插入一个值,因为维护\(x\)不方便。所以考虑一个\(cur\),每次对于新的\(i\)不能跳过时移动\(cur\),然后队......
  • win11 家庭版 如何启用管理员账户
    win11家庭版如何启用管理员账户     以管理员身份运行  输入  netuser 再输入 netuseradministrator/active:yes   ......
  • Win11 如何更改管理员权限,修改hosts内容
    一、找到hosts文件所在位置C:\Windows\System32\drivers\etc\hosts二、右键点击hosts,选择属性三、点击第二个安全,进入编辑界面四、点击添加,在最后一个窗口输入Everyone,单击确定五、出来之后第一个第一个页面相比之前多了Everyone,点击Everyone,在第二个窗口中的写入选项......
  • DBeaver安装教程(开发人员和数据库管理员通用数据库管理工具)
    前言DBeaver是一个通用的数据库管理工具和SQL客户端,支持MySQL,PostgreSQL,Oracle,DB2,MSSQL,Sybase,Mimer,HSQLDB,Derby,以及其他兼容JDBC的数据库。DBeaver提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB数据,修改数据库结......
  • sqldumper.exe 是 SQL Server 的一个重要组件,专门用于捕获和处理关键错误,帮助管理员和
     sqldumper.exe的起源可以追溯到MicrosoftSQLServer的开发和运行时管理中。它作为SQLServer的一部分,主要用于处理数据库引擎遇到的关键错误和异常情况。具体来说,sqldumper.exe主要功能包括:异常处理和故障捕获:当SQLServer数据库引擎遇到严重错误时,如内存访问错误......
  • CSP - Junior 初赛备考手册 如何答题
    本文章将结合CSP2019-2023的题目,本蒟蒻将分享自己的拙见。网络CSP2019T1中国的国家顶级域名是______。A..cnB..chC..chnD..chinaAnswer:A常识问题。二进制运算CSP2019T2二进制数\(11~1011~1001~0111\)和\(01~0110~1110~1011\)进行按位与运算的结果......
  • 简单的ATM 注册,登录,存钱,取钱,管理员查看 功能的实现,register(注册方法),login(登录方法),lo
    1.main()方法publicclasstest{publicstaticvoidmain(String[]args){ArrayList<people>people=newArrayList<>();Scannerscanner=newScanner(System.in);while(true){System.out.println("......
  • OpenFlow 是一个网络通信协议,它允许网络管理员通过中央控制器(如 OpenFlow 控制器)来编
    OpenFlow是一个网络通信协议,它允许网络管理员通过中央控制器(如OpenFlow控制器)来编程定义网络中的数据包转发行为。OpenFlow协议通常用于软件定义网络(SDN)架构中,其中网络控制平面与数据转发平面是分离的。在Python中,直接编写与OpenFlow交换机交互的代码通常涉及使用......
  • unity is running as administrator 管理员权限问题
    每次打开工程弹出unityisrunningasadministrator的窗口unity版本2022.3.34f1,电脑系统是win11系统解决方法一:解决方法二:unity版本2022.3.34f1,电脑系统是win11系统每次打开工程都会出现unityisrunningasadministrator的窗口,真的很烦人。本人使用第二种方法......