Xtreme8.0 - Kabloom

题目连接:

https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/kabloom

Description

The card game Kabloom is played with multiple decks of playing cards. Players are dealt 2 n cards, face up and arranged in two rows of n cards. The players must discard some of the cards, so that the cards that remain in the first row match the rank of the cards that remain in the second row. The cards match only in rank (e.g. an Ace of Hearts matches any other Ace regardless of suit), but they must appear in the same order in each row. The players are not able to rearrange the order in which the cards appear. Note also that a Joker can match any card including another Joker .

The goal is to maximize the sum of the point value of the cards that remain. Aces are worth 20 points, face cards are worth 15 points, and the numbered cards are worth the number on the card (e.g. the Seven of Clubs is worth 7 points).The value of a Joker is equal to the card with which it is matched, e.g. a Joker matched with an Ace is worth 20 points, a Joker matched with a face card is worth 15 points, etc. If two Jokers are matched with each other, they are worth 50 points each.

Input

The input is made up of multiple test cases (#test cases<=30, if 1<=n<=10 or #test cases<=10 if 10<=n<=1000). Each test case contains three lines of input.

The first line in each test case is an integer n , 1 <= n <= 1,000, indicating how many cards are in each row.

The second line of the test case will contain n symbols representing the ranks of the cards in the first row. Each symbol will be chosen from the list {A, 2, 3, 4, 5, 6, 7, 8, 9, T, J, Q, K, R}. The symbols in the list represent the following ranks, respectively, {Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Joker}. Similarly, the third line of the test case will contain the n symbols of the cards in the second row.

The input will end with a 0 on a line by itself.

Output

For each test case, output the value of the best Kabloom hand on a line by itself. Note that the cards that comprise the best Kabloom hand may not be unique for a test case.

Note: Every line of output should end in a newline character .

Sample Input

9

6 3 7 4 2 A K R T

3 5 4 7 R A Q K T

0

Sample Output

140

Hint

题意

给你2n个扑克牌,每行n张牌

你需要扔掉一些牌,使得上下两层牌一一对应。

如果两个A对应,那么可以得20分,如果是脸牌的话,那么就可以得15分,其他就是牌的分值。

王可以替代任意牌,如果是两张王牌对应的话,那么可以得50分。

问你最多可以得多少分,答案需要乘以2

题解

比较裸的dp,带权的最长公共子序列

代码

 #include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3+6; int add(char a,char b){
if(a=='R'&&b=='R')return 50;
if(a=='R'){
if(b=='A')return 20;
if(b=='Q')return 15;
if(b=='K')return 15;
if(b=='J')return 15;
if(b=='T')return 10;
return b-'0';
}
if(b=='R'){
if(a=='A')return 20;
if(a=='Q')return 15;
if(a=='K')return 15;
if(a=='J')return 15;
if(a=='T')return 10;
return a-'0';
}
if(a=='A')return 20;
if(a=='Q')return 15;
if(a=='K')return 15;
if(a=='J')return 15;
if(a=='T')return 10;
return a-'0';
}
char a[maxn][5],b[maxn][5];
int n,dp[maxn][maxn];
int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==0)break;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
scanf("%s",a[i]);
for(int i=1;i<=n;i++)
scanf("%s",b[i]);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
if(a[i][0]==b[j][0]||a[i][0]=='R'||b[j][0]=='R'){
dp[i][j]=max(dp[i][j],dp[i-1][j-1]+add(a[i][0],b[j][0]));
}
}
}
cout<<dp[n][n]*2<<endl;
}
}

最新文章

  1. nginx 反向代理
  2. 利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
  3. su su- sudo的区别
  4. Python LDAP中的时间戳转换为Linux下时间
  5. Redis 笔记与总结4 set 和 zset 类型
  6. 最简单的自定义适配器adapter
  7. Oracle插入多个值的问题
  8. Struts:文件上传下载
  9. 201521123055 《Java程序设计》第5周学习总结
  10. golang初识2
  11. django 通过邮箱和用户名都能登录
  12. centos7 安装percona-toolkit工具包的安装和使用
  13. VS2015 之 常用快捷键
  14. powerDesiner设计数据库的一些用法
  15. 2.CSS使用基础(1)
  16. c++虚函数&amp;重写
  17. 【笨木头Lua专栏】基础补充05:迭代器番外篇
  18. 【转】Asp.Net MVC4 之Url路由
  19. 如何将JPG格式的图片转化为带地理坐标的TIFF格式
  20. pow(x,y)函数的实现算法(递归函数)

热门文章

  1. bzoj千题计划248:bzoj3697: 采药人的路径
  2. SQL语句(九)使用特殊关系运算符查询
  3. J2EE简介
  4. 在OS X 10.9配置WebDAV服务器联合NSURLSessionUploa…
  5. Zookeeper笔记之使用zk实现集群选主
  6. 02 uni-app框架学习:设置全局样式统一每个页面的背景颜色
  7. jdk1.8源码Synchronized及其实现原理
  8. 【Hadoop】搭建完全分布式的hadoop【转】
  9. Linux监控重要进程的实现方法
  10. 关于Mysql5.6半同步主从复制的开启方法【转】