HAUT校赛--某科学的打麻将
问题 E: 某科学的打麻将
时间限制: 1 秒 内存限制: 64 MB
提交: 18 解决: 2
提交 状态
题目描述
过年打麻将果然是一项必备技能(雾),打麻将的起手式是整理好自己手中的牌,现在你有十三张牌(只可能出现一万到九万,一筒到九筒,一条到九条),你要把这些牌整理好,使得相同花色的牌必须在连续的唯一一段(即所有的"万"要放在一起,所有的"条"要放在一起,所有的"筒"要放在一起。),每段内牌是按照从小到大的顺序排列(“万”,“条”,“筒”的顺序没有要求)。你每次只能将当前牌中的任意一张牌放到最左边或者最右边。请问最少经过多少次可以使得牌被整理好。
一万到九万,用数字1-9表示
一筒到九筒,用小写字母a-i表示
一条到九条,用大写字母A-I 表示
输入
第一行 一个数字T代表数据组数(T<=10000)
接下来每行 13个字符 代表初始的牌
输出
T行每行一个数字,代表答案
样例输入
1 3abcABBDEFG11
样例输出
1
总共3种字符,任意排列共6种情况,对于每种情况,用原串的子序列匹配有序串的子串,所得出的最长长度就是不
用移动的字符个数,最后6种情况中取最优的即可!
PS:此题题目数据有问题(已改)
http://172.18.66.54:50015/JudgeOnline/problem.php?cid=1020&pid=4
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<algorithm>
using namespace std;
char str[18], jud[18], a[18], b[18], c[18];
int dp[18][18];
int Jud(int n)
{int i, j, bet;bet = 0;for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(str[i]==jud[j])dp[i][j] = dp[i-1][j-1]+1;elsedp[i][j] = dp[i-1][j];bet = max(bet, dp[i][j]);}}//printf("%s %d\n", jud+1, bet);return n-bet;
}
int main(void)
{int T, n, la, lb, lc, i, ans;scanf("%d", &T);while(T--){scanf("%s", str+1);n = strlen(str+1);la = lb = lc = 0;for(i=1;i<=n;i++){if(isdigit(str[i]))a[++la] = str[i];else if(islower(str[i]))b[++lb] = str[i];elsec[++lc] = str[i];}a[la+1] = b[lb+1] = c[lc+1] = 0;sort(a+1, a+la+1);sort(b+1, b+lb+1);sort(c+1, c+lc+1);memset(jud, 0, sizeof(jud));strcat(jud+1, a+1), strcat(jud+1, b+1), strcat(jud+1, c+1);ans = Jud(n);memset(jud, 0, sizeof(jud));strcat(jud+1, a+1), strcat(jud+1, c+1), strcat(jud+1, b+1);ans = min(ans, Jud(n));memset(jud, 0, sizeof(jud));strcat(jud+1, b+1), strcat(jud+1, a+1), strcat(jud+1, c+1);ans = min(ans, Jud(n));memset(jud, 0, sizeof(jud));strcat(jud+1, b+1), strcat(jud+1, c+1), strcat(jud+1, a+1);ans = min(ans, Jud(n));memset(jud, 0, sizeof(jud));strcat(jud+1, c+1), strcat(jud+1, b+1), strcat(jud+1, a+1);ans = min(ans, Jud(n));memset(jud, 0, sizeof(jud));strcat(jud+1, c+1), strcat(jud+1, a+1), strcat(jud+1, b+1);ans = min(ans, Jud(n));printf("%d\n", ans);}return 0;
}
HAUT校赛--某科学的打麻将相关推荐
- HAUT校赛--最大奇子段和
问题 G: 最大子段和 时间限制: 1 秒 内存限制: 64 MB 提交: 42 解决: 10 提交 状态 题目描述 一个大小为n的数组a1到an(−10^4≤ai≤10^4).请你找出一个连续子 ...
- HAUT校赛 魔法宝石 暴力
问题 C: 魔法宝石 时间限制: 2 秒 内存限制: 64 MB 提交: 505 解决: 149 提交 状态 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是 ...
- 18年12月蓝桥杯校赛
前言 昨天下午参加了蓝桥杯校内选拔赛. 不谈别人,只谈自己,我觉得这次校赛的发挥还算正常,大概做出了5/8或4/5吧,剩下几道题没时间看了. 应该提高做题效率了- 第一题 Excel地址 Excel单 ...
- 郑轻第六届校赛 -- 部分题解
1427: 数字转换 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 379 Solved: 93 SubmitStatusWeb Board Des ...
- [置顶]2010年东北大学ACM程序设计竞赛冬季校赛题解
8题只做出4题比较easy的题,而且做得挺麻烦,看来还要多练练. AC的题如下 NEUOJ 1112 I Love Apple Description So many people love app ...
- 2017校赛 问题 F: 懒人得多动脑
题目描述 小D的家A和学校B都恰好在以点F为焦点的双曲线上,而小D每日所需的生活水源在一条平行该双曲线准线的直线上,设它的值为v.大家都知道,每天都是要喝水的,但是小D有点懒,他希望自己能在去上学或者 ...
- 关于安徽赛区推广校赛的实施办法
关于安徽赛区 推广校赛的实施办法 全国组委会: 安徽赛区作为第一个省级赛区自2010年举办至今,受到安徽省教育厅和安徽各高校高度认可,是安徽省教育厅重点支持的大学生学科和技能竞赛A类赛事.但安徽赛 ...
- 第18届浙江大学校赛 Mergeable Stack
The 18th Zhejiang University Programming Contest Sponsored by TuSimple 第18届浙江大学校赛的c题 解析:起先是用stack写的模 ...
- 21-5-22校赛J 下围棋
21-5-22校赛J 下围棋 给出一个节点个数为n的树,其根节点为1,两个人轮流操作,每一次操作可以选择一个非根节点,删除这个节点及其子树,当一个人无法进行操作的时候,他就输掉了.问后手是必胜还是必败 ...
最新文章
- 月薪25-80K丨一汽(南京)招聘雷达感知开发工程师、主管、主任、高级主任
- php怎么添加框架,PHPWind 给默认的风格添加大框架
- AI公开课:19.03.07王海峰博士《人工智能技术与产业应用》课堂笔记以及个人感悟
- 掌握Angular2的服务(service)
- W-D-S-UART编程
- SQL中的left join
- hdoj - 1258 Sum It Up hdoj - 1016 Prime Ring Problem (简单dfs)
- .Net程序员学习Linux最简单的方法
- python函数作用域_Python命名空间和作用域的基本认识和一点小魔法
- 深度学习自学(三十五):双向图推理全景图像分割
- 细说GIT分布式版本控制器
- Landsat8处理小工具(python)
- VS2017离线下载及安装方式
- 关于j2sdk的设置
- java.lang.ClassCastException: com.sun.proxy.$Proxy7 cannot be cast to comms.service.message
- HTML基本结构标签
- linux 关闭 飞行模式,飞行模式和免打扰模式的区别
- tp摄像头的默认地址_tplink的ip默认地址是什么?
- 物联网应用技术和计算机应用技术哪个更好,2020物联网应用技术专业选什么大学好?...
- 基于Windows平台的Radius服务器搭建指南
热门文章
- python爬虫步骤-Docker部署Python爬虫项目的方法步骤
- 调研报告|在线语音识别改进之 RNN-T 训练
- 语音识别芯片的经典应用案例
- 来自DFRobot的中文语音识别模块
- Keil用C语言定义函数,STC单片机Keil中C语言函数定位的方法
- python多态_记录学习python第9天-继承/多态
- mysql 修复数据表 批量_MySQL数据库迁移与MySQL数据库批量恢复
- 【java笔记】线程(2):多线程的原理
- SDL2源代码分析5:更新纹理(SDL_UpdateTexture())
- bootstrapValidator验证失败问题