zoukankan      html  css  js  c++  java
  • HDU

    小Q最近阅读了SA-IS算法在线性时间内构造后缀数组的相关论文,面对任何字符串题,都可以想出线性时间的算法。

    小T在经历过二分图匹配事件后,再也不相信小Q所说的话。面对小Q,小T又给出了一道字符串题:

    给定一个长度为nn 的小写字符串S[1..n]S[1..n] ,设sufisufi 表示以ii 为开始的后缀,即S[i..n]S[i..n] 。

    |X||X| 为字符串XX 的长度,对于两个字符串XX 和YY ,定义XX 的字典序比YY 小,当且仅当存在非负整数k(kmin(|X|,|Y|))k(k≤min(|X|,|Y|)) 使得XX 的前kk 个字符与YY 的前 kk 个字符对应相同,并且要么满足|X|=k|X|=k 且|Y|>k|Y|>k ,要么满足k<min(|X|,|Y|)k<min(|X|,|Y|) 且XX 的第k+1k+1 个字符比YY 的第k+1k+1 个字符小。例如aa的字典序比aaa小,ab的字典序比ba小。

    请对每个i(1i<n)i(1≤i<n) ,判断sufisufi 和sufi+1sufi+1 的字典序大小关系。

    只会吹牛的小Q又不会做了,所以他再一次向你紧急求助。请写一个程序,判断相邻两个后缀的大小关系。Input第一行包含一个正整数T(1T10)T(1≤T≤10) ,表示测试数据的组数。

    每组数据第一行包含一个正整数n(2n1000000)n(2≤n≤1000000) ,表示字符串SS 的长度。

    第二行包含一个长度为nn 的小写字符串SS 。

    Output

    对于每组数据,输出一行n1n−1 个字符,第ii 个字符表示sufisufi 和sufi+1sufi+1 的大小关系,若sufi<sufi+1,输出< ,否则输出> ,显然不存在相等关系。

    Sample Input

    1
    17
    quailtyacmbestacm

    Sample Output

    <><<<<><<><<<><<
    思路:如果s[i]<s[i+1]则输出<;如果s[i]>s[i+1]则输出>;否则就把相等的个数sign相加,循环sign次,输出和最后那个关系一样的符号( < 或 > )
    #include <cstdio>
    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <map>
    using namespace std;
    
    int t, n;
    char s[1000000+8];
    
    int main()
    {
        scanf("%d", &t);
        while(t--)
        {
            scanf("%d", &n);
            scanf("%s", s);
            int sign = 1;
            for(int i = 0; i<n-1; i++)
            {
                if(s[i]<s[i+1])
                {
                    while(sign--)
                        printf("<");
                    sign = 1;
                }
                else if(s[i]>s[i+1])
                {
                    while(sign--)
                        printf(">");
                    sign = 1;
                }
                else sign++;
            }
            while(--sign)
                printf(">");
            printf("
    ");
        }
        return 0;
    }
     
  • 相关阅读:
    基于注解的mybatis(转)
    git分支删除
    java多线程同步(转)
    hadoop学习笔记(五):java api 操作hdfs
    java常用设计模式一:单例模式
    mysql CONCAT用法
    mysql date_sub用法
    hadoop学习笔记(四):hdfs常用命令
    try-catch+thows异常范围说明
    Python 类的多态
  • 原文地址:https://www.cnblogs.com/RootVount/p/10887090.html
Copyright © 2011-2022 走看看