洛谷来源:P3955 [NOIP2017 普及组] 图书管理员 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/solution/P3955

一本通来源:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid=1415

题目背景
NOIP2017 普及组 T2题目描述
图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个正整数。 每位借书的读者手中有一个需求码,这个需求码也是一个正整数。如果一本书的图书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。 小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他需要的书,请输出-1−1。输入格式
第一行,包含两个正整数 n , qn,q,以一个空格分开,分别代表图书馆里 书的数量和读者的数量。接下来的 nn 行,每行包含一个正整数,代表图书馆里某本书的图书编码。接下来的 qq 行,每行包含两个正整数,以一个空格分开,第一个正整数代表图书馆 里读者的需求码的长度,第二个正整数代表读者的需求码。输出格式
qq 行,每行包含一个整数,如果存在第 ii 个读者所需要的书,则在第 ii 行输出第 ii 个读者所需要的书中图书编码最小的那本书的图书编码,否则输出-1−1。输入输出样例
输入 #1复制
5 5
2123
1123
23
24
24
2 23
3 123
3 124
2 12
2 12
输出 #1复制
23
1123
-1
-1
-1
说明/提示
【数据规模与约定】对于 20\%20%的数据,1 ≤ n ≤ 21≤n≤2。另有 20\%20%的数据,q = 1q=1。另有 20\%20%的数据,所有读者的需求码的长度均为 11。另有 20\%20%的数据,所有的图书编码按从小到大的顺序给出。对于 100\%100%的数据,1 ≤ n ≤ 1,000,1 ≤ q ≤ 1,0001≤n≤1,000,1≤q≤1,000,所有的图书编码和需求码均 不超过 10,000,00010,000,000。

虽然是第二题,但是不管是测试点还是题目都非常的水

很多大佬用int做的, 我就分享一下string的做法吧

分析一下题目:

先输入;

然后写一个函数,判断当前图书编码是不是顾客想要找的

再写一个函数, 判断可行图书编码的大小 主要思路就是:先判断数位,如果数位相同就直接比大小;

注:string字符串可以直接比大小,依据是从首位开始每一位的字典序,谁的字典序大谁就大

举个例子:

123 和 321 ;3 比1 大 结束:321;

123 和 124; 1相同, 2相同, 4 比 3 大 结束:124大;

abc 和 abd ;同上;

abc 和abC; C 的字典序比 c 的小, 结束:abc大

这样这道题的思路就理清了;

我贴一下代码

#include <iostream>
#include <algorithm>//下面用到了typedef
#include <cstring>
#include <cmath>
#include <string>
//万能头也可以 参考:#include <bits/stdc++.h>using namespace std;typedef long long ll;//就是把long long 这个数据类型简写为ll
const ll N = 10050;
int n, m;
string min_word;struct book {string s;
}a[N];//一个小技巧,可以代替二维数组(结构体相关的知识都写到这道题了应该没有不会的吧)bool same_ (string x, string y) {int l_x = x.length();int l_y = y.length();for (int i = 1; i <= l_y; i ++) {if (x[l_x - i] != y[l_y - i]) {//从后面开始比较(不清楚可以看题目)return false;}}return true;//个人习惯true和false}void compare_ (string x, string y) {//比较大小int l_x = x.length();int l_y = y.length();if (l_x > l_y) {min_word = y;}else if (l_x < l_y) {min_word = x;}else if (l_x == l_y){min_word = min (x, y);}
}int main () {cin >> n >> m;for (int i = 1; i <= n; i ++) {cin >> a[i].s;}for (int i = 1; i <= m; i ++) {min_word = "zzzzzzzzz";//这样min_num就可以足够大了int l;string b;cin >> l >> b;bool flag = false;for (int j = 1; j <= n; j ++) {if (same_ (a[j].s, b)) {compare_ (a[j].s, min_word); flag = true;//标记是否有}}if (flag) {cout << min_word << endl;}else {cout << "-1" << endl;}}return 0;                             }

这样就可以AC了

预祝各位备战的同学们和我顺利省一

P3955 [NOIP2017 普及组] 图书管理员C++题解相关推荐

  1. 信息学奥赛一本通 1415:【17NOIP普及组】图书管理员 | 洛谷 P3955 [NOIP2017 普及组] 图书管理员

    [题目链接] ybt 1415:[17NOIP普及组]图书管理员 洛谷 P3955 [NOIP2017 普及组] 图书管理员 [题目考点] 1. 枚举 2. 二分 [解题思路] 解法1:枚举 对于每个 ...

  2. P3955 [NOIP2017 普及组] 图书管理员——模拟

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

  3. 洛谷P3955 [NOIP2017 普及组] 图书管理员

    题目链接 纯粹的暴力枚举,复杂度O(n2) 因为题目数据很小,所以很安全,不会超时. #include<bits/stdc++.h> using namespace std;#define ...

  4. [NOIP2017普及组]图书管理员

    NOIP2017 题目描述 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数. 每位借书的读者手中有一个需求码,这个需求码也是一个正整数.如果一本书的图 书编码恰好以读 ...

  5. ◆竞赛题目◆◇NOIP 2017 普及组◇ 图书管理员

    ◇NOIP 2017 普及组◇图书管理员 Description 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数. 每位借书的读者手中有一个需求码,这个需求码也是一个 ...

  6. luogu3955 图书管理员(NOIP2017普及组第2题)

    luogu3955 图书管理员(NOIP2017普及组第2题) 时空限制    1000ms/128MB 题目描述 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数. ...

  7. [NOIP2017 普及组]跳房子 【题解】

    题目背景 NOIP2017 普及组 T4 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n n ...

  8. 信息学奥赛一本通 1414:【17NOIP普及组】成绩 | 洛谷 P3954 [NOIP2017 普及组] 成绩

    [题目链接] ybt 1414:[17NOIP普及组]成绩 洛谷 P3954 [NOIP2017 普及组] 成绩 [题目考点] 1. 算术表达式 2. 自动类型转换 低精度类型与高精度类型计算结果是高 ...

  9. noi2017初赛c语言试题,NOIP2017普及组初赛试题及答案

    原标题:NOIP2017普及组初赛试题及答案 清北学堂信息学金牌教研团今天为学生们整理了NOIP2017普及组初赛试题及答案,供学生们参考哦! --此文2100多文字,大概需要60分钟看完 一.单项选 ...

最新文章

  1. mysql数据库备份还原
  2. StringUtils.join的用法
  3. 【树莓派】【转载】基于树莓派,制作家庭媒体中心+下载机
  4. Wonder 1.0 正式版发布,WebGL 3D引擎和编辑器
  5. 秒懂Mycat和MySQL的区别【转自百度知道】
  6. linux文件怎么操作,linux文件操作学习1
  7. Vue 教程第九篇—— 动画和过度效果
  8. select 设置发送超时发送注意事项
  9. scrapy爬取汽车之家宝马5系图片
  10. 基于android的视频采集系统的设计与实现,基于Android的视频采集系统的设计与实现...
  11. vSphere Web Client使用指南之安装配置
  12. 详解ISA2006的三种客户端模式
  13. 轻松学习JavaScript二十一:DOM编程学习之获取元素节点的子节点和属性节点
  14. 用 JNI 进行 Java 编程(1)
  15. 3.mysql的主从原理是什么_mysql 的主从实现原理
  16. Java实现文件或文件夹的复制到指定目录
  17. McCabe环路复杂度计算方法
  18. 2020AI顶会的腾讯论文解读 | 多模态学习、视频内容理解、对抗攻击与对抗防御等「AI核心算法」
  19. [前端笔记——HTML介绍] 4.HTML文本基础+超链接+高级文本格式
  20. java8 list 转Map的各种写法

热门文章

  1. html输入框传给服务器,如何将浏览器上的数据,提交到服务器?
  2. 工作随笔:如何开展测试工作
  3. 虚拟机里面的Ubuntu系统如何调用主机的显卡
  4. iocomp iPlot使用说明10 Tables表格
  5. hex文件、out文件、bin文件、map文件解析
  6. Win2000、NT 环境真正 RPL 无盘 WIN98 安装指南(转)
  7. QT-编译调试时碰到“ ‘xxx’ file not found”-“The process was ended forcefully.”,“ Illegal byte sequence”等问题
  8. WBSC 世界棒垒球总会·亚洲
  9. Jmeter使用教程 压力测试(1)--线程组、HTTP请求、察看结果树
  10. (完整项目系统)人工智能医疗健康管理疾病诊断分析系统,医疗健康机器人系统框架