TYVJ P1082 找朋友 Label:字符串

描述

童年的我们,对各种事物充满了好奇与向往。这天,小朋友们对数字产生了兴趣,并且想和数字交朋友。可是,怎么分配这些数字才能使得每个小朋友都唯一地找到一个数字朋友呢?C小朋友说:咱们按自己名字的字典序先后,依次选择一个剩余的最小的数字当朋友。好么?Q小朋友十分赞同。于是,大家都同意了。

输入格式

第一行为一个数n,为小朋友数和数字数。
下面n行为小朋友们的名字。
再下面n行为候选的n个数字。

输出格式

n行,按字典序输出n个小朋友姓名及所选的数字朋友。

测试样例1

输入


src 
oldway 
claire 
whqsdhr 
ylq 
89757 
20091111 
130203 
8000800 
1008611

输出

claire 89757 
oldway 130203 
src 1008611 
whqsdhr 8000800 
ylq 20091111

备注

100%的数据满足:1<=n<=10000,每个数字均不超过1 500 000 000 (1.5*10^9)

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

struct node{
    string str;
}b[10005];

bool cmp(node a,node b){
    return a.str<b.str;
}

int a[10005];
int N;
int main(){
    scanf("%d",&N);
    string s;
    for(int i=0;i<N;i++){
//        scanf("%s",b[i].str);
        cin>>b[i].str;
    }
    for(int i=0;i<N;i++){
        scanf("%d",&a[i]);
    }
    sort(b,b+N,cmp);
    sort(a,a+N);
    for(int i=0;i<N;i++){
        cout<<b[i].str;
        printf(" %d\n",a[i]);
    }
    return 0;
}

一言不合就int,懒(bù)得(huì)用(yòng)vector

另,字符串比较规则:

比较的时候,从字符串左边开始,一次比较每个字符,直接出现差异、或者其中一个串结束为止。

比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后面一个串大,所以不再继续比较,结果就是后面个串大。

再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。

所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。

时间: 2024-11-08 13:18:42

TYVJ P1082 找朋友 Label:字符串的相关文章

hunnu--11548--找啊找啊找朋友

找啊找啊找朋友 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 14, Accepted users: 11 Problem 11548 : No special judgement Problem description   小明和小红是一对好朋友,小明一有空就去找小红玩.但是小红飘忽的行踪让小明很是伤脑筋. 小红居住的小区的地下有当年抗战时期留下的地道,小红平时总是

找出一个字符串中最长重复次数的子字符串,并计算其重复次数

原题 找出一个字符串中最长重复次数的子字符串,并计算其重复次数.例如:字符串"abc fghi bc kl abcd lkm abcdefg",并返回"abcd"和2. 我的思路 为了方便表述,我们使用变量src作为原字符串,sub_str作为子字符串. 由于题目要求寻找至少重复2次的最长的子字符串,重点在于最长的子字符串,而不在于重复的最多次数.因此我们可以从长度最长的字符串入手,计算其重复次数.只要重复达到2次,即可返回该字符串. 显然长度最长的子字符串就是原串

【华为OJ】【081-查找两个字符串a,b中的最长公共子串】

[华为OJ][算法总篇章] [华为OJ][081-查找两个字符串a,b中的最长公共子串] [工程下载] 题目描述 查找两个字符串a,b中的最长公共子串 输入描述 输入两个字符串 输出描述 返回重复出现的字符 输入例子 abcdefghijklmnop abcsafjklmnopqrstuvw 输出例子 jklmnop 算法实现 import java.util.Scanner; /** * Author: 王俊超 * Date: 2016-01-04 08:43 * Declaration: A

从两个字符串中找出最大公共子字符串

从两个字符串(str_1,str_2)中找出最大公共子字符串(comString)的方法为: 选取长度较短的字符串(假设str_1较短)做截取: 从字符串中截取长度为1的子字符串: 每个子字符串都在str_2中做查询,查询到则将该字符串赋予comString: 从字符串中截取长度为2的子字符串,重复3: 从字符串中截取长度为n的子字符串,重复3: 结束. 截取字符串例子: 实例: [Java] /** * create by lijiaman on 2016-09-24 * 题目:求两个字符串的

【原创】字符串工具类--找出单元字符串

package week01; import java.util.regex.Matcher; import java.util.regex.Pattern; /**** * * 字符串帮助类 * @author csharper * @since 2014.10.08 * */ public class StringHelper { /*** * 找出单位字符串大小 * @param str 源字符串 * @return 单位字符串大小 */ public static int findUni

CNUOJ 0290 找朋友

找朋友 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 现在有N个人在找朋友.如果a和b是朋友,b和c是朋友,那么a和c也是朋友.XJR是所有人的朋友(人缘好吧),知道M个信息,每次知道一对朋友.那么请你回答每个人有多少朋友呢? 输入 第一行,两个数N(N<=100000).M,分别表示有多少人以及XJR所知道的信息的数量.接下来M行,每行有两个不同的数x(1<=x<=N).y(1<=y<=N),表示x与

找出子字符串在字符串中的所有索引

/// <summary> /// 找出子字符串在字符串中的所有索引,"ccc"在"ccccc"中认为只有一个 /// </summary> /// <param name="str"></param> /// <param name="subStr"></param> /// <returns></returns> private

[PTA]7-1 找最小的字符串 针对输入的N个字符串,输出其中最小的字符串(c++)

7-1 找最小的字符串 本题要求编写程序,针对输入的N个字符串,输出其中最小的字符串. 输入格式: 输入第一行给出正整数N:随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符. 输出格式: 在一行中用以下格式输出最小的字符串: Min is: 最小字符串 输入样例: 5 Li Wang Zha Jin Xian 输出样例: Min is: Jin 解答: 1 #include <iostream> 2 #include<string> 3 using

9.11排序与查找(五)——有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置

/** * 功能:有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置. */ /** * 思路:对二分查找法做修改,与mid比较的地方,如果mid为空字符串,则将mid换到离它最近的非空字符串的位置. * @param strings * @param str * @return */ public static int search(String[] strings,String str){ if(strings==null||str==null||str=="")