zoukankan      html  css  js  c++  java
  • CF 319D(Have You Ever Heard About the Word?-模拟)

    D. Have You Ever Heard About the Word?
    time limit per test
    6 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    substring of a string is a contiguous subsequence of that string. So, string bca is substring of string abcabc, but string cc is not.

    repeating block is a string formed by concatenating some string with itself. So, string abcabc is a repeating block, but strings abcabd,ababab are not.

    You've got a sequence of Latin characters (string). At each step you find the shortest substring that is a repeating block, if there exists more than one you must choose the leftmost. As the substring is of form XX (X — some string) you replace this substring with X, in other words you delete one of the X substrings in the substring. You repeat this process until there remains no repeating block in the string.

    How would the final string looks like? Look at the sample explanation to understand the statement more precise.

    Input

    In the first line of input you're given a string of small Latin characters with length between 1 to 50000, inclusive.

    Output

    Print the final string after applying changes.

    Sample test(s)
    input
    abccabc
    
    output
    abc
    
    input
    aaaabaaab
    
    output
    ab
    
    input
    birdbirdbirdistheword
    
    output
    birdistheword
    
    Note

    At the first sample the string transforms as follows: abccabc  abcabc  abc.

    At the second sample the string transforms as follows: aaaabaaab  aaabaaab  aabaaab  abaaab  abaab  abab  ab.


    模拟能过……

    E文是硬伤,要的是最短中最左子串,不是最左中最短子串……

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<functional>
    #include<cmath>
    #include<cctype>
    using namespace std;
    #define For(i,n) for(int i=1;i<=n;i++)
    #define Rep(i,n) for(int i=0;i<n;i++)
    #define Fork(i,k,n) for(int i=k;i<=n;i++)
    #define ForD(i,n) for(int i=n;i;i--)
    #define Forp(x) for(int p=pre[x];p;p=next[p])
    #define RepD(i,n) for(int i=n;i>=0;i--)
    #define MEM(a) memset(a,0,sizeof(a))
    #define MEMI(a) memset(a,127,sizeof(a))
    #define MEMi(a) memset(a,128,sizeof(a))
    #define MAXN (50000+10)
    char s[MAXN];
    int main()
    {
    //	freopen("CF319D.in","r",stdin);
    //	freopen(".out","w",stdout);
    	int t=1;
    	while (t--)
    	{
    	int n=strlen(gets(s+1));
    	For(len,n/2)
    	{
    		int tot=0;
    		For(j,n-len)
    		{
    			if (s[j]==s[j+len]) tot++;else tot=0;
    			if (tot==len)
    			{
    				Fork(k,j+1,n-len) s[k]=s[k+len];
    				n-=len;len=0;break;
    			}
    		}			
    	}
    	s[n+1]=0;
    	puts(s+1);
    	}
    	return 0;
    }



  • 相关阅读:
    RPC和Socket
    监控与管理dubbo服务
    系统架构
    Spring Web工程web.xml零配置即使用Java Config + Annotation
    Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
    Zxing 的集成 ---- Maven 对应 Gradle 的写法
    Android SpannableString与SpannableStringBuilder
    Android 仿微信朋友圈9宫格图片展示&多选图片
    AndroidRichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)
    Android 清除canvas 笔迹代码
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3153173.html
Copyright © 2011-2022 走看看