zoukankan      html  css  js  c++  java
  • OUC_Summer Training_ DIV2_#4之数据结构

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26100#problem/A

    A - A
    Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u

    Description

    You have devised a new encryption technique which encodes a message by inserting between its characters randomly generated strings in a clever way. Because of pending patent issues we will not discuss in detail how the strings are generated and inserted into the original message. To validate your method, however, it is necessary to write a program that checks if the message is really encoded in the final string. 

    Given two strings s and t, you have to decide whether s is a subsequence of t, i.e. if you can remove characters from t such that the concatenation of the remaining characters is s. 

    Input

    The input contains several testcases. Each is specified by two strings s, t of alphanumeric ASCII characters separated by whitespace.The length of s and t will no more than 100000.

    Output

    For each test case output "Yes", if s is a subsequence of t,otherwise output "No".

    Sample Input

    sequence subsequence
    person compression
    VERDI vivaVittorioEmanueleReDiItalia
    caseDoesMatter CaseDoesMatter
    

    Sample Output

    Yes
    No
    Yes
    No
     
     1 //是很简单的题啦  但是我数组开的有点小 总是runtime error
     2 #include<stdio.h>
     3 #include<string.h>
     4 char a[100010];
     5 char b[100010];
     6 int main()
     7 {
     8     int i,j,na,nb,t = 0,m = 0;
     9     char c;
    10     while(scanf("%s",a) != EOF)
    11     {
    12         scanf("%s",b);
    13         na = strlen(a);
    14         nb = strlen(b);
    15         for(i = 0;i < na;i++)
    16         {
    17             for(j = t;j < nb;j++)
    18             {
    19                 if(a[i] == b[j])
    20                 {
    21                     m++;
    22                     t = j + 1;
    23                     break;
    24                 }
    25             }
    26         }
    27         if(m == na )printf("Yes
    ");
    28         else printf("No
    ");
    29         m = 0;
    30         t = 0;
    31     }
    32     return 0;
    33 }
    View Code
    B - B
    Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u

    Description

    Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways: 
    q By an integer sequence P = p1 p2...pn where pi is the number of left parentheses before the ith right parenthesis in S (P-sequence). 
    q By an integer sequence W = w1 w2...wn where for each right parenthesis, say a in S, we associate an integer which is the number of right parentheses counting from the matched left parenthesis of a up to a. (W-sequence). 

    Following is an example of the above encodings: 

    S (((()()())))
    P-sequence 4 5 6666
    W-sequence 1 1 1456

    Write a program to convert P-sequence of a well-formed string to the W-sequence of the same string. 

    Input

    The first line of the input contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case is an integer n (1 <= n <= 20), and the second line is the P-sequence of a well-formed string. It contains n positive integers, separated with blanks, representing the P-sequence.

    Output

    The output file consists of exactly t lines corresponding to test cases. For each test case, the output line should contain n integers describing the W-sequence of the string corresponding to its given P-sequence.

    Sample Input

    2
    6
    4 5 6 6 6 6
    9 
    4 6 6 6 6 8 9 9 9
    

    Sample Output

    1 1 1 4 5 6
    1 1 2 4 5 1 1 3 9
     
     1 //先把括号的情况还原,在用递归的方法给括号配对,递归不是很熟练,虽然很简单,写了好几遍才对。
     2 #include<stdio.h>
     3 char y[10000];    
     4 int w[50],n,l,j;
     5 int f()
     6 {
     7     int s=1;
     8     while(1)
     9         if(y[j]=='(')
    10         {
    11             j++;
    12             s+=f();
    13         }
    14         else
    15         {
    16             w[l++]=s;
    17             j++;
    18             return s;
    19         }
    20 }
    21 int main()
    22 {
    23     int N,i,k,m;
    24     scanf("%d",&N);
    25     while(N--)
    26     {
    27         scanf("%d",&n);
    28         for(i=0,l=0,k=0;i<n;i++)
    29         {
    30             scanf("%d",&m);
    31             for(j=0;j<m-k;j++)
    32                 y[l++]='(';
    33             y[l++]=')';
    34             k=m;
    35         }
    36         l=j=0;
    37         f();
    38         for(i=0;i<n;i++)
    39             printf("%d ",w[i]);
    40         printf("
    ");
    41     }
    42     return 0;
    43 }
    View Code
  • 相关阅读:
    three.js-texture
    three.js-binary operator
    three.js-model
    three.js-bone
    JS时间戳
    JQUERY删除操作
    Synchronized和Static Synchronized区别
    JQUERY 保存成功后又下角动态提示
    jquery from提交和post提交
    防止多次领取红包进行ID锁
  • 原文地址:https://www.cnblogs.com/lwy-kitty/p/3194249.html
Copyright © 2011-2022 走看看