暴力也是一种算法

发现好多事情自己都无法解决,╮(╯-╰)╭    

对问题要不求甚解才对啊,

没必要完全弄懂,优化绝大多数之后,暴力掉也可以

譬如:


Codeforce  String Reconstruction  http://codeforces.com/contest/828/problem/C

题目T在了样例8,发现 样例子段ti 是重复的 ,对于k次更新,每次更新  ti  的长度的值

假如 ti 的长度1e6,1e6次更新,再加上不同的子段的更新,就会超时,但是,对于每次子段的更新,

加一个pre//最后一个更新的位置

对于每次子段的更新最多1e6,相比之前的,去掉了一个1e6,

暴力跑了280ms,其他做法跑了233ms,差不了多少,重点是过了

# include <bits/stdc++.h>
using namespace std;

const int maxn=1e7+10;
int n,m,d;
char s[maxn],a[maxn];

int main(){
    while(scanf("%d",&n)!=EOF){
        int len=0;
        fill(a,a+maxn,'A');
        for(int i=0;i<n;i++){
            scanf("%s%d",s,&m);
            int l=strlen(s);
            int pre=-1;
            for(int j=0;j<m;j++){
                scanf("%d",&d);
                len=max(len,d+l-1);
                for(int k=max(0,pre-d);k<l;k++){
                    a[d+k]=s[k];
                }
                pre=max(pre,d+l-1);
            }
        }
        for(int i=1;i<=len;i++){
            if(a[i]=='A') printf("a");
            else printf("%c",a[i]);
        }
        printf("\n");
    }
}
View Code

 

posted @ 2017-07-12 23:26  林探惜  阅读(84)  评论(0)    收藏  举报