History Grading
题意:看懂之后就是求两个串的最长公共子串。
题解:不过这里要注意一下,就是题目中假如说第一个数是2,表示事件1应该放在第二个位子,这样转化一下就可以了。以前集训的时候也搞过这样的东西,但是年代久远,往事早已随风而去。今天复习了一下,发现很简单的说,就是输出公共子序列的地方卡了一下。
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
int c[][],b[][];//c[i][j]表示到a串第i位b串第j位所取得的最大长度,
char A[],B[];//b数组是用来记录的,便于DFS输出
int n,temp;
void PrintLCS(char *str1, int i, int j) {
if(i== || j==)
return ;
if(b[i][j]==){//表示原来的串中a,b是相同的
PrintLCS(str1, i-, j-);
printf("%c",str1[i-]);
}
else if(b[i][j]==)//表示a串的第i位没有取,跳过
PrintLCS(str1, i-, j);
else
PrintLCS(str1, i, j-);//表示b串的第j位没有取,跳过
}
int lcs(char* A,char * B){
int x=strlen(A);
int y=strlen(B);
memset(c,,sizeof(c));
memset(b,,sizeof(b));
for(int i=;i<=x;i++){
for(int j=;j<=y;j++){
if(A[i-]==B[j-]){
c[i][j]=c[i-][j-]+;
b[i][j]=;
}
else if(c[i-][j]>c[i][j-]){//表示a串的第i位没有取,跳过
c[i][j]=c[i-][j];
b[i][j]=;
}
else{
c[i][j]=c[i][j-];//表示b串的第j位没有取,跳过
b[i][j]=-;
}
}
}
//PrintLCS(A, x, y);
return c[x][y];
} int main(int argc, char const *argv[]){ scanf("%d",&n);
for(int i=;i<=n;i++){//把数字转化成字符串
scanf("%d",&temp);
A[temp-]='a'+i-;
}
while(~scanf("%d",&temp)){
B[temp-]='a';
for(int i=;i<=n;i++){//把数字转化成字符串
scanf("%d",&temp);
B[temp-]='a'+i-;
}
cout<<lcs(A,B)<<endl;
}
return ;
}
History Grading的更多相关文章
- UVa 111 - History Grading (by 最长公共子序列 )
History Grading Background Many problems in Computer Science involve maximizing some measure accor ...
- uva 111 History Grading(最长公共子序列)
题目连接:111 - History Grading 题目大意:给出一个n 代表序列中元素的个数, 然后是一个答案, 接下来是若干个同学的答案(直到文件结束为止), 求出两个序列的最长公共子序列, 注 ...
- UVA 111 History Grading
读题读了好久,其实就是在输入数据时要对数据的位置进行相应的改变 #include<iostream> #include<cstring> #include<cstdio& ...
- uva 111 - History Grading (dp, LCS)
题目链接 题意:给N,第二行是答案,n个数c1---cn, 代表第一个的顺序是c1,第二个数顺序是c2; 下面每一行是学生的答案,格式同上. 注意:这个给的顺序需要处理一下,不能直接用. 思路:LCS ...
- UVa 111 History Grading (简单DP,LIS或LCS)
题意:题意就是坑,看不大懂么,结果就做不对,如果看懂了就so easy了,给定n个事件,注意的是, 它给的是第i个事件发生在第多少位,并不是像我们想的,第i位是哪个事件,举个例子吧,4 2 3 1, ...
- uva 111 History Grading(lcs)
题目描述 在信息科学中有一些是关于在某些条件限制下,找出一些计算的最大值. 以历史考试来说好了,学生被要求对一些历史事件根据其发生的年代顺序来排列.所有事件顺序都正确的学生无疑的可以得满分.但是那些没 ...
- UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...
- 【转载】ACM总结——dp专辑
感谢博主—— http://blog.csdn.net/cc_again?viewmode=list ---------- Accagain 2014年5月15日 动态规划一 ...
- 一位学长的ACM总结(感触颇深)
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...
随机推荐
- vue-cli 中 使用vue-resource 输出后台数据
阅读此文前,请了解vue-cli 组件如何使用 http://www.cnblogs.com/pearl07/p/6252116.html 1,mock(模拟)后台数据(新建data.Json文件) ...
- Hadoop入门--HDFS(单节点)配置和部署 (一)
一 配置SSH 下载ssh服务端和客户端 sudo apt-get install openssh-server openssh-client 验证是否安装成功 ssh username@192.16 ...
- Servlet跳转
方便自己查询,嫌低级的勿喷.... 在Servlet中跳转有两种: 1.客户端跳转 在Servlet中要进行客户端跳转(地址栏的地址信息将发生改变),直接使用HttpServletResponse接口 ...
- Axure7.0.0.3155注册码
Licence:aaa Key1:h624pifAqt7It5e8boKkML+Y4RjDX5xknP4k7QktJYQoxsvv7VUS7hBCv/2ef45P Key2:2GQrt5XHYY7SB ...
- 最蛋疼的bug:读取图片缩略图(一定要在相冊查看下形成缓存)
近期的一个连接服务端的应用.须要读取图片,一般供用户公布商品选择上传图片.初始的图片列表应该是缩略图.仅仅有确定了,才上传原图,OK不多说上代码 package edu.buaa.erhuo; imp ...
- redis+keeplived分布式缓存
redis(三)redis+Keepalived主从热备秒级切换 博客分类: 分布式缓存Redis redis高可用Keepalived 一 简介 安装使用centos 5.10 Master 19 ...
- [Angular 2] Pipes with Multiple Parameters
Showing how to set up a Pipe that takes multiple updating inputs for multiple Component sources. imp ...
- 根据IP地址获取IP的详细信息
<?php header('Content-Type:text/html; charset=utf-8'); function ip_data() { $ip = GetIP(); $url = ...
- 案例:计算1!+2!+3!+......+n!
/* * 1!+2!+3!+......+n! * */ import java.util.Scanner; public class ForTest{ public static void main ...
- HDU 5040 Instrusive(BFS+优先队列)
题意比较啰嗦. 就是搜索加上一些特殊的条件,比如可以在原地不动,也就是在原地呆一秒,如果有监控也可以花3秒的时间走过去. 这种类型的题目还是比较常见的.以下代码b[i][j][x]表示格子i行j列在x ...