2016中国大学生程序设计竞赛 - 网络选拔赛 1011 Lweb and String hdu5842
来源:互联网 发布:c4d 电脑配置 知乎 编辑:程序博客网 时间:2024/06/05 07:32
Problem Description
Lweb has a string S .
Oneday, he decided to transform this string to a new sequence.
You need help him determine this transformation to get a sequence which has the longest LIS(Strictly Increasing).
You need transform every letter in this string to a new number.
A is the set of letters of S , B is the set of natural numbers.
Every injectionf:A→B can be treat as an legal transformation.
For example, a String “aabc”,A={a,b,c} , and you can transform it to “1 1 2 3”, and the LIS of the new sequence is 3.
Now help Lweb, find the longest LIS which you can obtain fromS .
LIS: Longest Increasing Subsequence. (https://en.wikipedia.org/wiki/Longest_increasing_subsequence)
Oneday, he decided to transform this string to a new sequence.
You need help him determine this transformation to get a sequence which has the longest LIS(Strictly Increasing).
You need transform every letter in this string to a new number.
Every injection
For example, a String “aabc”,
Now help Lweb, find the longest LIS which you can obtain from
LIS: Longest Increasing Subsequence. (https://en.wikipedia.org/wiki/Longest_increasing_subsequence)
Input
The first line of the input contains the only integer T,(1≤T≤20) .
ThenT lines follow, the i-th line contains a string S only containing the lowercase letters, the length of S will not exceed 105 .
Then
Output
For each test case, output a single line "Case #x: y", where x is the case number, starting from 1. And y is the answer.
Sample Input
2aabccacdeaa
Sample Output
Case #1: 3Case #2: 4
直接统计不同字母数量即可。。
我还特意写了个LIS
#include<map>#include<cmath>#include<queue>#include<vector>#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int a[1000001];int line[1000001];int l[1000001];int find(int ll,int rr,int x){ int mid; do { mid=(ll+rr)/2; if(x>line[mid]&&x<line[mid+1]) return mid; else if(x>=line[mid]) ll=mid+1; else rr=mid-1; } while(ll<=rr); return 0;}int v[40];int main(){int T;scanf("%d",&T);int n,k=0;while(T>0){T--;k++;string x;cin>>x;int n=x.size();int i;memset(v,0,sizeof(v));int d=0;for(i=0;i<n;i++){int xx=x[i]-'a';if(!v[xx]){d++;v[xx]=d;a[i+1]=d;}elsea[i+1]=v[xx];} int len=1; line[len]=a[1]; int j; for(i=2;i<=n;i++) { if(a[i]>line[len]) j=++len; else j=find(1,len,a[i])+1; line[j]=a[i]; // printf("%d %d %d\n",line[1],line[2],line[3]); } printf("Case #%d: ",k); printf("%d\n",len);}}
0 0
- 2016中国大学生程序设计竞赛 - 网络选拔赛 1011 Lweb and String hdu5842
- 2016中国大学生程序设计竞赛 - 网络选拔赛 1011 Lweb and String
- HDUOJ5832Lweb and String&&2016中国大学生程序设计竞赛 - 网络选拔赛1011
- 2016中国大学生程序设计竞赛 - 网络选拔赛 1011
- 2016中国大学生程序设计竞赛 - 网络选拔赛 hdu5833 Zhu and 772002
- HDU5842-Lweb and String
- hdu5842-Lweb and String
- 2016中国大学生程序设计竞赛 - 网络选拔赛
- 2016中国大学生程序设计竞赛 - 网络选拔赛
- 2016中国大学生程序设计竞赛网络选拔赛
- 2016中国大学生程序设计竞赛 - 网络选拔赛 1001
- 2016中国大学生程序设计竞赛 - 网络选拔赛
- HDU 5833 Zhu and 772002(高斯消元)——2016中国大学生程序设计竞赛 - 网络选拔赛
- HDU 5833 Zhu and 772002 2016中国大学生程序设计竞赛 - 网络选拔赛(高斯消元)
- 2016中国大学生程序设计竞赛 - 网络选拔赛 1002 Zhu and 772002 hdu5833
- 2016中国大学生程序设计竞赛 - 网络选拔赛题解报告
- 2016中国大学生程序设计竞赛 - 网络选拔赛——题目笔记
- 2016中国大学生程序设计竞赛 - 网络选拔赛 1004 Danganronpa hdu5835
- java7--(1.7)也可能还早的-----HashMap的实现原理
- 在浏览器中输入网址到网页展现全部过程
- mac下安装maven
- HashMap的工作原理
- realloc,malloc,calloc的区别 new delete和malloc free的区别
- 2016中国大学生程序设计竞赛 - 网络选拔赛 1011 Lweb and String hdu5842
- 跨进程访问——AIDL服务
- ontouchevent浅谈
- 解决Cannot change version of project facet Dynamic web module to 3.0
- 同步与非同步,阻塞与非阻塞
- 分布式锁:Java常用技术方案
- 极大似然估计
- Java基础之-容器类概述
- Java 中nextLine()与nextInt()的错误点