'?‘可以匹配所有的字符 问最多有多少个匹配的字符对
贪心
s1串和s2串中只要有一样的字符就凑一对
剩下的用’?‘和另一串中非’?‘的匹配
剩下的两串’?'匹配
这样就是最多的了

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;const double PI=acos(-1.0);
const double eps=1e-6;
const ll mod=1e9+7;
const int inf=0x3f3f3f3f;
#define N 200005int n;
string s1;
string s2;
vector<int> arr1[200];
vector<int> arr2[200];
int he1[200];
int he2[200];
int add=0;
int t1,t2;
int main(){#ifdef LOCALfreopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);
#endifscanf("%d%*c",&n);getline(cin,s1);getline(cin,s2);for(int i=0; i<n; i++){arr1[s1[i]].push_back(i+1);he1[s1[i]]++;arr2[s2[i]].push_back(i+1);he2[s2[i]]++;}t1=he1['?'];t2=he2['?'];for(int i='a'; i<='z'; i++){add+=min(he1[i],he2[i]);}int ttt1=min(n-add-t2,t1);int ttt2=min(n-add-t1,t2);add+=ttt2;t2-=ttt2;add+=ttt1;t1-=ttt1;add+=min(t1,t2);printf("%d\n",add);int tt;for(int i='a'; i<='z'; i++){tt=min(he1[i],he2[i]);while(tt--){printf("%d %d\n",arr1[i].back(),arr2[i].back());arr1[i].pop_back();arr2[i].pop_back();}}int f='a';while(ttt1--){if(!arr2[f].empty()){printf("%d %d\n",arr1['?'].back(),arr2[f].back());arr1['?'].pop_back();arr2[f].pop_back();} else{ttt1++;f++;}}f='a';while(ttt2--){if(!arr1[f].empty()){printf("%d %d\n",arr1[f].back(),arr2['?'].back());arr1[f].pop_back();arr2['?'].pop_back();} else{ttt2++;f++;}}int ttt3=min(t1,t2);while(ttt3--){printf("%d %d\n",arr1['?'].back(),arr2['?'].back());arr1['?'].pop_back();arr2['?'].pop_back();}return 0;
}

codeforces-D. Colored Boots相关推荐

  1. CodeForces - 1141D Colored Boots(暴力+水题)

    题目链接:点击查看 题目大意:给出两个字符串s和t,两个字符串中相同的字母可以匹配,问号可以和任意字符匹配,现在问两个字符串最多能匹配多少个字符,并给出匹配的下标 题目分析:挺好玩的一道水题,大体思路 ...

  2. Colored Boots

    https://codeforces.com/contest/1141/problem/D 题解: 记录第一个字符串每个字母的位置 历遍第二个字符串,先跳过?字符,因为?不可以与?字符配对先,造成浪费 ...

  3. [CodeForces-1141D] Colored Boots

    题意:从两串长度为n的字符串中找到相同的字符,问号可以和任意字符匹配,然后输出最多可以匹配多少个字符(每个字符最多匹配一次),输出个数x并在接下来x行中输出x对相匹配的字符分别在两串字符中的位置. 题 ...

  4. codeforces 424E Colored Jenga (状态压缩,概率dp用hash记忆优化搜索)

    题意: 给出以最多6层的积木,每层可以由三个木块拼成,总共有三种颜色的木块,开始时给出了积木的排列情况,我们每次可以从积木中抽一块木块,抽木块的规则是投骰子,骰子分别投到red,blue,green, ...

  5. CodeForces - 780C Andryusha and Colored Balloons(dfs染色)

    Andryusha goes through a park each day. The squares and paths between them look boring to Andryusha, ...

  6. C. Colored Balls: Revisited codeforces 1728A

    Problem - 1728A - Codeforces 题目大意:有n个袋子,每个袋子有cnt个球,每次可以拿出两个不同袋子的球,问最后可能剩下的是编号为多少的袋子 思路:奇数个球每次拿2个,最后至 ...

  7. codeforces Kyoya and Colored Balls

    题解见:http://blog.csdn.net/libin56842/article/details/46650209 注意这里的组合数取模~~~ 1 /*Author :usedrose */ 2 ...

  8. Codeforces Round #336 (Div. 2) D. Zuma 记忆化搜索

    D. Zuma 题目连接: http://www.codeforces.com/contest/608/problem/D Description Genos recently installed t ...

  9. 【Codeforces】 Round #374 (Div. 2)

    Position:http://codeforces.com/contest/721 我的情况 开始还是rank1,秒出C.(11:00机房都走光了,我ma到11:05才走,只打了一个小时) 结果.. ...

最新文章

  1. 台湾MCI报告:Security SaaS风潮渐起
  2. 行家来信 | 功能安全会成为自动驾驶的紧箍咒吗?
  3. python项目-python项目
  4. java bitset_Java BitSet clone()方法及示例
  5. 怎么在linux下使用ftp服务器,怎么在Linux下建立安全的FTP服务器?
  6. html 图片上放置按钮,用CSS在图片上再加一个小按钮
  7. oracle里查询表的语句,Oracle查询用户所有表的语句
  8. erlang一次线上问题解决
  9. 操作系统实验_Chcore -- 上交IPADS操作系统银杏书配套Lab实验笔记 - Lab2内存管理(一)...
  10. Delphi 调用Domino Lotus OA
  11. 微信H5页面内实现一键关注公众号
  12. fenby C语言 P17
  13. 报表的查询条件只能在数据上方吗?
  14. PHP获取数组中重复数据
  15. 如何在远程会议的时候静音吃薯片?微软团队用AI去除视频噪声
  16. 计算机无法识别佳能70d相机,佳能相机常见的错误代码和解决方案-万兴恢复专家...
  17. Codeforces 633H Fibonacci-ish II【线段树】
  18. Spring Cloud【Finchley】实战-05配置中心的搭建(配合使用Eureka)和Config Server高可用
  19. apkeditor pro_APK编辑器 APK Editor Pro v1.15.0 + ApkModifier v3.6
  20. 敏捷迭代管理 --需求变更规范

热门文章

  1. 如何用计算机扫描图片变成文字,怎么扫描图片上的文字-华为手机黑科技"文字扫描仪",3秒就能将纸质文档转成电子档,牛...
  2. Sendrawpdu—Iphone短信欺骗工具发布下载
  3. .NET-房贷计算器
  4. Swift实战-豆瓣电台(一)准备
  5. 基础研究的高风险导向型范式,助力“从0到1”的创新
  6. 企业邮箱品牌选择,公司邮箱托管,外包企业邮箱哪个好?
  7. 【AI 学习】2.机器学习和深度学习综述
  8. 低功耗蓝牙BLE之连接事件、连接参数和更新方法
  9. 敏涵控股集团董事长刘敏不忘初心 做新时代的铿锵玫瑰
  10. lstm模型_基于LSTM模型的学生反馈文本学业情绪识别方法