CF1141D.Colored Boots

普及/提高-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There are nn left boots and nn right boots. Each boot has a color which is denoted as a lowercase Latin letter or a question mark ('?'). Thus, you are given two strings ll and rr, both of length nn. The character lil_i stands for the color of the ii-th left boot and the character rir_i stands for the color of the ii-th right boot.

A lowercase Latin letter denotes a specific color, but the question mark ('?') denotes an indefinite color. Two specific colors are compatible if they are exactly the same. An indefinite color is compatible with any (specific or indefinite) color.

For example, the following pairs of colors are compatible: ('f', 'f'), ('?', 'z'), ('a', '?') and ('?', '?'). The following pairs of colors are not compatible: ('f', 'g') and ('a', 'z').

Compute the maximum number of pairs of boots such that there is one left and one right boot in a pair and their colors are compatible.

Print the maximum number of such pairs and the pairs themselves. A boot can be part of at most one pair.

有 nn 只左靴和 nn 只右靴。每只靴子都有一个颜色,用一个小写拉丁字母或问号('?')表示。因此,你将得到两个长度均为 nn 的字符串 ll 和 rr。字符 lil_i 表示第 ii 只左靴的颜色,字符 rir_i 表示第 ii 只右靴的颜色。

小写拉丁字母表示一种确定的颜色,而问号('?')表示一种不确定的颜色。两种确定的颜色彼此兼容当且仅当它们完全相同;不确定的颜色与任意颜色(确定的或不确定的)均兼容。

例如,以下颜色对是兼容的:('f', 'f')、('?', 'z')、('a', '?') 和 ('?', '?');以下颜色对不兼容:('f', 'g') 和 ('a', 'z')。

请计算最多能组成多少对靴子,使得每对中恰好包含一只左靴和一只右靴,且它们的颜色兼容。

请输出这样的最大配对数以及所有配对本身。每只靴子至多只能参与一对。

输入格式

The first line contains nn (1≤n≤1500001 \le n \le 150000), denoting the number of boots for each leg (i.e. the number of left boots and the number of right boots).

The second line contains the string ll of length nn. It contains only lowercase Latin letters or question marks. The ii-th character stands for the color of the ii-th left boot.

The third line contains the string rr of length nn. It contains only lowercase Latin letters or question marks. The ii-th character stands for the color of the ii-th right boot.

第一行包含一个整数 nn(1≤n≤1500001 \le n \le 150000),表示每条腿的靴子数量(即左靴数量和右靴数量)。

第二行包含一个长度为 nn 的字符串 ll,仅由小写拉丁字母或问号组成。其中第 ii 个字符表示第 ii 只左靴的颜色。

第三行包含一个长度为 nn 的字符串 rr,仅由小写拉丁字母或问号组成。其中第 ii 个字符表示第 ii 只右靴的颜色。

输出格式

Print kk — the maximum number of compatible left-right pairs of boots, i.e. pairs consisting of one left and one right boot which have compatible colors.

The following kk lines should contain pairs aj,bja_j, b_j (1≤aj,bj≤n1 \le a_j, b_j \le n). The jj-th of these lines should contain the index aja_j of the left boot in the jj-th pair and index bjb_j of the right boot in the jj-th pair. All the numbers aja_j should be distinct (unique), all the numbers bjb_j should be distinct (unique).

If there are many optimal answers, print any of them.

输出 kk —— 兼容的左右靴子对的最大数量,即由一只左靴和一只右靴组成的、颜色兼容的配对数量。

接下来的 kk 行应包含配对 aj,bja_j, b_j(其中 1≤aj,bj≤n1 \le a_j, b_j \le n)。第 jj 行应包含第 jj 对中左靴的索引 aja_j 和右靴的索引 bjb_j。所有 aja_j 必须互不相同(唯一),所有 bjb_j 也必须互不相同(唯一)。

若存在多个最优解,输出任意一个即可。

输入输出样例

  • 输入#1

    10
    codeforces
    dodivthree

    输出#1

    5
    7 8
    4 9
    2 2
    9 10
    3 1
  • 输入#2

    7
    abaca?b
    zabbbcc

    输出#2

    5
    6 5
    2 3
    4 6
    7 4
    1 2
  • 输入#3

    9
    bambarbia
    hellocode

    输出#3

    0
  • 输入#4

    10
    code??????
    ??????test

    输出#4

    10
    6 2
    1 6
    7 3
    3 5
    4 8
    9 7
    5 1
    2 4
    10 9
    8 10

输入解题思路,AI测评打分。不知道怎么写?

首页