解码,暴力。

恬不知耻地把暴力题解放了上来,因为k比较小,直接暴力找到字符串第k大就可以了。

编码解码就是根据组合数学公式算出来它到底在哪。

dfs返回bool就能使得找到字典序第k大字符串以后退出dfs,节省时间。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxl = 30; char s[3][maxl][maxl];
int ok[3][maxl][maxl];
int cnt[maxl],a[maxl][maxl];
int res,num,last;
int p[maxl]; bool dfs(int n) {
if(n==6) {
num++;
if(num==last) {
for(int i=1;i<=5;i++) printf("%c",p[i]+'A');
printf("\n");
return true;
}
return false;
}
for(int i=1;i<=cnt[n];i++) {
p[n]=a[n][i];
if(dfs(n+1)) return true;
}
return false;
} int main() {
int T;
scanf("%d",&T);
while(T--) {
scanf("%d",&last);
memset(ok,0,sizeof(ok));
memset(cnt,0,sizeof(cnt));
for(int k=1;k<=2;k++)
for(int i=1;i<=6;i++) {
scanf("%s",s[k][i]+1);
for(int j=1;j<=5;j++)
ok[k][j][s[k][i][j]-'A']=1;
}
for(int i=1;i<=5;i++)
for(int j=0;j<26;j++)
if(ok[1][i][j]&&ok[2][i][j])
a[i][++cnt[i]]=j;
res=1; num=0;
for(int i=1;i<=5;i++) res*=cnt[i];
if(res<last) printf("NO\n");
else dfs(1);
}
return 0;
}

uva1262Password的更多相关文章

  1. UVA1262Password(第K字典序)

    题目链接 紫书P323 题意:两个6*5的字母矩阵,两个矩阵每列相同的字母,每列取一个,求按照字典序第k小的序列 分析: 对于第一个样例来说,我们得到{ACDW}.{BOP}.{GMOX}.{AP}. ...

随机推荐

  1. Visual Studio Code asp.net 5环境搭建技能Get

    启动准备阶段 预热 1 VS Code 官方地址:https://www.visualstudio.com/en-us/products/code-vs.aspx 2 安装Node.js :https ...

  2. 怎么让CentOS集群自动同步时间

    怎么让CentOS集群自动同步时间?首先机器要连外网,这样才能从互联网上同步时间,这是首先要了解的.好了,主要的方法如下: 在除了运行ntpd之外的机器上,执行: [html] # chkconfig ...

  3. js函数:setInterval()/clearInterval()——js网页计时器

    一.setInterval()/clearInterval()技术学习 都是window对象的方法,可以直接使用. setInterval(function(){},1000);:每1000毫秒执行一 ...

  4. 20160728noip模拟赛zld

    前言:单独对题面描述的评分-> [题解]把相邻长度为2的子串两两连边,跑欧拉路 /*明天再写,先贴一份方老师代码压压惊*/ #include<map> #include<sta ...

  5. epoll 知识总结

    poll/select/epoll 对比 http://www.cnblogs.com/apprentice89/p/3234677.html    ---有待继续学习 http://blog.chi ...

  6. VC6.0环境安装STLport-5.2.1

    今天安装STLport,网上搜资料安装好久,都不行,因为STLport 的版本不对,我这是STLport-5.2.1新版本. (注意:下面的步骤都在一个cmd里操作,很简单的原因:环境变量啊) 1.首 ...

  7. Scrum敏捷开发简介

    Agile 敏捷开发实践中,强调团队的自我管理.在 Scrum 中,自我团队管理体现在每天的 Scrum 会议中和日常的协同工作,在每天的 Scrum 例会中,团队成员一般回答一下几个问题 : 昨天完 ...

  8. Unity3D研究院之脚本批量打包渠道包研究

    原地址:http://www.xuanyusong.com/archives/2418#comments 最近在研究Unity3D脚本批量打包,比如在Android平台下各种不同分辨率和不同内存大小的 ...

  9. 跨线程调用控件之MethodInvoker

    原文:http://www.cnblogs.com/cm8448940/archive/2008/07/10/1240045.html 使用到两个控件,一个按钮button1,一个标签label1. ...

  10. libvirt编译报错

    virsh # list --all错误:连接到管理程序失败错误:无效的连接错误:将插槽连接到 '/usr/local/var/run/libvirt/libvirt-sock' 失败: 没有那个文件 ...