《ACM书中题目》 V

ACM入门题目(北大ACM教材) 这个是自己经过一段时间A的题目,非抄书!然后也自己做了一个工程把它管理起来。 ACM.h   这个头文件主要是一些头文件映如以及一些ACM函数的定义 #include #include #include #include #include #include #include #include #include #include #include #include #include #inc 阅读详情
  • 原题

    Description
    Jim is fond of reading books, and he has so many books that sometimes it’s hard for him to manage them. So he is asking for your help to solve this problem.

    Only interest in the name, press year and price of the book, Jim wants to get a sorted list of his books, according to the sorting criteria.

    Input
    The problem consists of multiple test cases.

    In the first line of each test case, there’s an integer n that specifies the number of books Jim has. n will be a positive integer less than 100. The next n lines give the information of the books in the format Name Year Price. Name will be a string consisting of at most 80 characters from alphabet, Year and Price will be positive integers. Then comes the sorting criteria, which could be Name, Year or Price.

    Your task is to give out the book list in ascending order according to the sorting criteria in non-ascendent order.

    Note: That Name is the first criteria, Year is the second, and Price the third. It means that if the sorting criteria is Year and you got two books with the same Year, you’d sort them according to their Name. If they equals again, according to their Price. No two books will be same in all the three parameters.

    Input will be terminated by a case with n = 0.

    Output
    For each test case, output the book list, each book in a line. In each line you should output in the format Name Year Price, the three parameters should be seperated by just ONE space.

    You should output a blank line between two test cases.

  • 理解&思路
    本题是一个三维排序问题,给出多组数据,按一定规则排序。
    因为题目中指定排序优先级,所以定义三个排序方式,根据题目指定安排不同的排序规则最后输出。

  • AC代码

#include<bits/stdc++.h>
using namespace std;
struct book{
    string name;
    int year;
    int price;
};
bool cmpName(const book &a, const book &b){
    if(a.name != b.name) 
        return a.name < b.name;
    else if(a.year != b.year)
        return a.year < b.year;
    else
        return a.price < b.price;
}

bool cmpYear(const book &a, const book &b){
    if(a.year != b.year)
        return a.year < b.year;
    else if(a.name != b.name)
        return a.name < b.name;
    else
        return a.price < b.price;
}

bool cmpPrice(const book &a, const book &b){
    if(a.price != b.price)
        return a.price < b.price;
    else if (a.name != b.name)
        return a.name < b.name;
    else
        return a.year < b.year;
}

int main(){
    int n;
    vector<book> v;
    book bk;
    string sorting;
    int line = 0;
    while(cin >> n){
        if(n == 0)
            break;
        v.clear();
        line++;
        for(int i = 0; i < n; i++){
            cin >> bk.name >> bk.year >> bk.price;
            v.push_back(bk);
        }
        cin >> sorting;
        if(sorting == "Name")
            sort(v.begin(), v.end(), cmpName);
        else if (sorting == "Year")
            sort(v.begin(), v.end(), cmpYear);
        else
            sort(v.begin(), v.end(), cmpPrice);
        if(line != 1)
            cout << endl;
        for(int i = 0; i < n; i++)
            cout << v[i].name << " " << v[i].year << " " << v[i].price << endl;
    }
    return 0;
}
ACM计算几何篇 1 前言 1.1 计算几何算法 1.2 计算几何题目特点及要领 1.3 预备知识 2 凸包 2.1 定义 2.1.1 凸多边形 2.1.2 凸包 2.2 颜料配色问题 2.2.1 问题描述 2.2.2 问题简化 2.2.3 问题抽象 2.2.4 数学抽象 2.2.4.1 Convex Combination And Affine Combination 2.2.4.2 区别与联系 ... 阅读详情

相关推荐

ACM题目常见输入问题

多组输入输出问题 和上一篇博客有一点点重复 1001 : A+B for Input-Output Practice (I) 题目链接 Description 计算A+B 程序设计任务中常常会包含多组输入输出。 Input 第一行一个正整数n,代表输入数据的组数。 以下n行,每行两个正整数 Output 计算这n组数的和,每组答案占一行 Sample Input 2 1 5 10 20 Sample Output 6 30 需要注意的问题 这道题是oj中第二道题,可能也是很多同学第一次遇到多组输入的

m0_62021646的博客 1679

S3快速入门

文档: https://s3browser.com/help.aspx 获取:AWS Access Keys. https://s3browser.com/aws-access-key-id-and-secret-access-key.aspx

霓虹深处 912

【ACM】JavaScript Node、JavaScript V8简单测试

如有错误欢迎指正与讨论,有详细的学习链接也欢迎分享。

Jamcy123的博客 2305

15.List the Books——列出书籍

Description Jim is fond of reading books, and he has so many books that sometimes it's hard for him to manage them. So he is asking for your help to solve this problem. Only interest in the name, pre...

qq_41886231的博客 896

C++实现三维背包问题解决方案

在算法领域中,背包问题是一种组合优化的问题。与常见的二维背包问题相比,三维背包问题引入了更多的维度,复杂性随之增加。三维背包问题通常可以表述为:给定一定数量的物品,每个物品都有三个属性——重量、价值和体积,以及一个背包,背包同样具有重量、价值和体积的限制。问题的目标是在不超过背包限制的情况下,选择物品的组合,使得背包中物品的总价值最大。为了更好地理解三维背包问题,我们可以先从它的基本概念开始,逐步分析其难点以及解决这一问题的意义。

weixin_33363025的博客 667

拜耳阵列(Bayer Pattern)和解马赛克简介

拜尔阵列由柯达的布莱斯·拜尔发明,拜尔阵列将更多的像素用于绿色,而不是红色和蓝色,因为人眼对绿色更敏感。但这张照片,每个像素只有rgb中的一种颜色,每个像素还缺少其它两个颜色分量,效果如下图3所示。典型的图像传感器(例如我们在数码相机中使用的图像传感器,主要有CCD, CMOS)由许多单独的光电传感器组成,所有这些传感器都会捕获光线。如果想要获得不同颜色的光,最直接的做法是加入不同颜色的滤镜,从而滤出 RGB 三个通道的颜色。这个覆盖层可以理解为一个过滤层,每种类型的过滤器通常只允许一种颜色的光线的通过。

qq_34999565的博客 5982

C++ 秘籍:问题解决方法(七)

原文:C++ recipes a problem-solution approach 协议:CC BY-NC-SA 4.0 十四、3D 图形编程 C++ 是高性能应用程序开发人员的首选编程语言。这通常包括需要向用户显示 3D 图形的应用程序。3D 图形在医疗应用、设计应用和视频游戏中很常见。所有这些类型的应用程序都要求将响应能力作为一个关键的可用性特性。这使得 C++ 语言成为这类程序的完美选择,因为程序员可以针对特定的硬件平台进行优化。 微软为 Windows 操作系统提供构建 3D 应用程序的专有

龙哥盟 1009

保姆级教程:用STM32F103C8T6和MAX6675搞定K型热电偶测温(附模拟/硬件SPI双版本代码)

本文提供STM32F103C8T6与MAX6675实现K型热电偶高精度测温的保姆级教程,涵盖硬件连接、SPI驱动实现及模拟SPI方案,并附双版本代码。详细解析温度数据读取、处理及常见问题排查,助力工业控制、实验室设备等场景的稳定测温系统搭建。

weixin_30765505的博客 587

ACM程序设计书中题目V

这道题大致的意思就是根据一个新的排序定义重排列一组数,一开始想到要用map,但是map只能存两个信息,一个是键值,一个是元素值,而题目中所给的一本书包括三个信息,所以我选择先使用自定义结构体定义一个book,再对含有book的一组数组分项进行排列,重载sort的排列方式,只要仔细读题,注意一下输出的格式,应该就可以ac了,下面是我的ac代码:   #include&lt;iostream&g...

z846666407 139

1.用Python写了一个进销存管理的软件~需求分析&界面设计&数据库设计&技术路线选择~

前端也打算用Python来写,查了很多的python库,大家比较推荐的是wxpython和QPython,之前接触过一点点的QT,确实非常强大,但是库比较重量级,自己写的这个东西明显配不上QT,又详细调研了一下wxpython,就是它了!

pepper_lihui的专栏 4321

vivado下ECO操作-不重新综合实现修改属性并生成.bit

ECO即engineer change order,即工程变更指令,可以对设计做局部小改动并只对改动部分重新布局布线并生成.bit。在一个工程动辄编译几个小时情况下,可以在调试中节省大量时间。比如我们在调试中,需要改变时钟占空比或者相位,需要改变寄存器初值等等,此时用ECO暂时改动,待验证后在重新编译无疑是最有效率的方法。 实现ECO通常有两种方式,一是通过vivado界面完成,另一种方法就是tcl脚本。所有的ECO操作都可以通过tcl操作完成,有的操作用vivado界面无法完成,只能通过tcl。以下主要

4657

《ACM程序设计》书中题目 V

<span title="Input ">题目简要: <span title="The problem consists of multiple test cases. ">问题由多个测试用例组成。 在每个测试用例的第一行,有一个整数n,指定吉姆的书数。 n将是小于100的正整数。接下来的n行以名称年价格的格式给出书籍的信息。名称将是一个字符串,从字母表中最多有80个字符,年份和价格将

alexlioooo的博客 346

YOLOv5源码逐行超详细注释与解读(1)——项目目录结构解析

全网最全YOLOv5项目目录结构超详细分析。逐个文件注释,小白上手必备

路人贾的博客 9万+

《ACM程序设计》书中题目V

Description Jim is fond of reading books, and he has so many books that sometimes it’s hard for him to manage them. So he is asking for your help to solve this problem.Only interest in the name, press

TimEckel的博客 461

华为OD机试真题 新系统【网络数据包收发处理】

华为OD机试 新系统真题【网络数据包收发处理】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【网络数据包收发处理】多语言题解。

qq_45776114的博客 444

摩尔线程嵌入式面试题及参考答案(2万字长文)

说一下你对 drm 框架的理解。 DRM(Direct Rendering Manager)是 Linux 系统中用于管理图形显示设备的一个重要框架。 从架构层面来讲,它处于内核空间,主要目的是为用户空间的图形应用程序提供一个统一的接口来访问图形硬件。DRM 包括内核态的驱动模块和用户态的库。内核态的驱动负责和硬件进行交互,比如对显存的管理、硬件寄存器的配置等。用户态的库则方便应用程序利用内核态提供的功能进行图形渲染等操作。 在图形显示的具体流程中,DRM 可以控制显示设备的分辨率、刷

大模型大数据攻城狮的专栏 1229

《ACM程序设计》书中题目 V - 22 给书排序

Description Jim is fond of reading books, and he has so many books that sometimes it's hard for him to manage them. So he is asking for your help to solve this problem. Only interest in the na

G_Meteor的博客 380

【微服务】Java 对接飞书多维表格使用详解

Java 对接飞书多维表格使用详解

congge_study的博客 1万+

acm程序设计书中题目第v题解析

这个题就是让我们对书按照名字,年份或者价格为主要顺序,以名字,年份,价格顺序的顺序为次要顺序对书目进行排序工作。 思路:这个题所排序的对象较多,排序规则繁杂,于是选择使用结构体绑定书目的三项内容,进行排序。 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

m0_37772713的博客 296

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ACM程序设计书中题目--V(对书按照特定方式排序)

题目简述:给定书的名字,年份和价格,按照其中某一顺序进行排序。 解题思路: 1、因为书的格式确定,由名字,年份,价格组成,所以每本书可以用一个结构体对成员进行存放。 2、由于要进行排序,所以首先想到的就是sort函数,因为书的数量不超过100,所以可以定义一个数组长度100的结构体。 3、定义函数,自定义排序。按照书的名字大小排序的函数,若名字大小相同,则按照年份排序,若还相同,按照价格排

sdau164185的博客 320

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ACM 比赛习题解说:从题目到解法的全流程

AKruskal算法是一种基于边的贪心算法,主要思路是从最小权重的边开始,不断地选择不会产生环的边,直到所有节点都连通。将所有边按权重从小到大排序。依次选择边,使用并查集判断加入这条边是否会形成环。如果不会形成环,就将这条边加入生成树,并更新总成本。重复这个过程,直到所有节点都连通。A并查集(Union-Find)是一种常用的数据结构,适用于处理连通性问题。Find:查找某个节点属于哪个集合。Union:将两个集合合并。

byby0325_的博客 1450

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ACM 书中题目专题总结

ACM 书中题目专题结束了,通过这一个专题的练习,掌握了一些写程序的技巧,同时也发现了自己在写程序中出现的问题。在写程序时发现自己总是对题意理解不够深刻,要花费很长时间才能读懂一个题目,对一个题目总是感觉无从下手,知识掌握的不够多,STL应用不够熟练,对写出的程序思考不够严谨,导致总是提交失败

Trust_Youself 396

《ACM程序设计》书中题目 N-14 颠倒数字相加

Description The Antique Comedians of Malidinesia prefer comedies to tragedies. Unfortunately, most of the ancient plays are tragedies. Therefore the dramatic advisor of ACM has decided to trans

G_Meteor的博客 485

IQuest-Coder-V1算法竞赛实战:ACM/ICPC题目求解案例

本文介绍了基于星图GPU平台自动化部署IQuest-Coder-V1-40B-Instruct镜像的实践方法,该镜像专为复杂算法求解优化,可高效应用于ACM/ICPC等竞赛场景中的模型微调与智能编程任务,显著提升算法开发效率与准确性。

weixin_42515842的博客 367

『ACM』ACM模板合集

ACM模板整理: 数学: 数论–康托展开与逆康托展开模板 数论–组合数(卢卡斯+扩展卢卡斯)模板 数论–Miller_Rabin判断素数 数论–中国剩余定理模板 数论–逆元(拓展欧几里得)模板 数论–逆元(费马小定理)模板 数学–数论–因子和线性筛 (模板) 数学–数论–随机算法–Pollard Rho 大数分解算法(纯模板带输出) 数学–数论–快速幂–最大公约数–位运算模板 线性筛求积性...

日拱一卒,功不唐捐 8282
上一篇: 《ACM书中题目》 B
下一篇: 《ACM书中题目》 W
qinglys
博客等级 码龄10年 0粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值