首页 > 编程语言 >算法刷题记录:[NOIP2017]图书管理员

算法刷题记录:[NOIP2017]图书管理员

时间:2023-05-30 18:34:24浏览次数:51  
标签:NOIP2017 string int ne ids cin 管理员 size 刷题

题目链接

https://ac.nowcoder.com/acm/contest/19306/1050

题目分析

因为要求最小编号,并且该编号是以读者的编号结尾,这边直接排序+翻转,找开头的数。
记录是因为看到某个大佬非常好的思路,直接对编号进行取模,就是末尾的数。
如果想得到末尾的数,直接进行取模即可~~

AC代码

#include <iostream>
#include <algorithm>

using namespace std;

int n, m;
string ids[1005];

// 找编码最小
bool cmp(string &a, string &b)
{
    if (a.size() != b.size()) return a.size() < b.size();
    for (int i = 0; i < a.size(); ++ i)
        if (a[i] != b[i]) return a[i] < b[i];
    return true;
}

int main()
{
    cin >> n >> m;
    for (int i = 0; i < n; ++ i)
        cin >> ids[i];
    sort(ids, ids + n, cmp);
    for (int i = 0; i < n; ++ i)
        reverse(ids[i].begin(), ids[i].end());
    string ne;
    int sz = 0;
    for (int i = 0; i < m; ++ i)
    {
        string ans;
        cin >> sz >> ne;
        int flag = false;
        reverse(ne.begin(), ne.end());
        for (int i = 0; i < n; ++ i)
            if (ids[i].find(ne) == 0)
            {
                ans = ids[i], flag = true;
                reverse(ans.begin(), ans.end());
                break;
            }
        if (flag) cout << ans << endl;
        else cout << -1 << endl;
    }
    
    return 0;
}

AC代码(看到的很棒的思路)

#include<bits/stdc++.h>
using namespace std;
const int N =1010;
int a[N];
int main()
{
    int n,q;
    cin>>n>>q;
    for(int i=0;i<n;i++) cin>>a[i];
    sort(a,a+n);
    while(q--)
    {
        int x,y;
        cin>>x>>y;
        for(int i=0;i<=n;i++)
        {    
            if(i == n) printf("-1\n");
            else if(a[i] >= y && a[i] % (int)pow(10, x) == y)
            {
                printf("%d\n", a[i]);
                break;
            }
        }
    }
}

标签:NOIP2017,string,int,ne,ids,cin,管理员,size,刷题
From: https://www.cnblogs.com/ClockParadox43/p/17444061.html

相关文章

  • 算法刷题记录:译码
    题目链接https://ac.nowcoder.com/acm/contest/19306/1046解题思路:10进制转x进制,只要反复%x、/x即可。%x取出末尾的数字,因为末尾的数字已经取出,所以将该数字\掉可以一起算也可以循环,取模不会影响除数。AC代码#include<iostream>usingnamespacestd;intT,n;//将......
  • 【转】【批处理】以管理员运行时修正当前路径
    转自:https://www.cnblogs.com/heroius/p/13600404.html在win7或更高版本windows系统中,使用管理员权限运行bat文件时,默认的当前路径(%CD%)被设置为C:\windows\system32。若脚本中使用了相对路径,那么运行将不正常。要解决此问题,在bat脚本的最前写入以下两行:@setlocalenableexte......
  • 服务之:urlacl解决服务HttpListener监听url需要管理员
    在使用HttpListener监听url时,如果没有以管理员身份运行可能会抛出异常,无法监听,遇到这个问题时,可以先使用管理员权限的程序将Url注册到urlacl列表,解决普通权限无法开启监听问题第一步: Netshhttpshowurlacl。查看有没有需要监听的url 第二步:添加Url到Urlacl:例如添加  "......
  • 刷题笔记53 动态规划14
    @目录动态规划1143.最长公共子序列1035.不相交的线53.最大子序和动态规划动态规划●1143.最长公共子序列●1035.不相交的线●53.最大子序和动态规划1143.最长公共子序列1143.最长公共子序列法1:动态规划intlongestCommonSubsequence(stringtext1,stringte......
  • 刷题笔记52 动态规划 part13
    @目录动态规划300.最长递增子序列674.最长连续递增序列718.最长重复子数组动态规划●300.最长递增子序列●674.最长连续递增序列●718.最长重复子数组300.最长递增子序列300.最长递增子序列法1:动态规划intlengthOfLIS(vector<int>&nums){//未考虑......
  • [刷题笔记55 动态规划15]
    @目录动态规划392.判断子序列115.不同的子序列动态规划●392.判断子序列●115.不同的子序列392.判断子序列392.判断子序列法1:动态规划boolisSubsequence(strings,stringt){//动态规划vector<vector<int>>dp(s.size()+1,vector<int>(t.size(......
  • CentOS 7重置root管理员密码
    1.首先确认下是否为RHEL7系统。如果是,然后再进行下面的操作。[root@bind-master17~]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)2.重启linux系统主机并出现引导界面时,按下键盘上的e键进入内核编辑界面: 3.在linux16参数这行的最后面追加“rd......
  • 【华为HCIP | 高级网络工程师】刷题日记(10)
    个人名片:......
  • 算法刷题记录:珂朵莉的假toptree
    题目链接https://ac.nowcoder.com/acm/contest/19306/1035题目分析将每个数每一位都进行拆分即可。AC代码#include<iostream>usingnamespacestd;intn,p=1,num=1;inta[1005];intmain(){cin>>n;while(p<=1000){if(num>=1......
  • ctfshow刷题笔记-misc入门
    ctfshow-misc入门图片篇(文件结构)misc241.在010Editor中打开文件,根据鼠标自动提示找到图片宽高对应的地方biWidth指定图象的宽度,单位是象素。biHeight指定图象的高度,单位是象素。2.修改图片高度为250px并另存3.打开后得到flagmisc251.从网上找到的脚本(将脚本和图片......