2017.11.30第十四周周中总结

来源:互联网 发布:印度尼西亚华人知乎 编辑:程序博客网 时间:2024/05/19 16:50

这个周仍旧尽量有空闲时间就到实验室呆着,到现在,状压dp一共做了4道题了,都是课件上的原题。。还有不少原题~~今晚继续做,还得补补昨天的题

昨天比赛单打的,A了一个D题,D比较简单,就是分组,唯一麻烦一点的就是要对应着输出相同数值 的位置,建两个数组存一下位置,然后查找输出就可以了、、

然后做的B题,也不是很难,关键是输出的要是字典排序最小的答案,昨天没有做出来,TLE了,后来回去想了一下,感觉有可以优化的地方,

然而,刚才做的时候,一直矛盾。。就搜了题解,结果发现题解的循环比我的更多!!不应该是TLE啊,于是就再重新看,结果,发现!!做的地方竟是因为数组的下标都是计算的,所以超时!!记录一下再用,就A了!!!

AC的:

for(i=0;i<a.size();i++)    {        v=a[i]-'A';        if(l[v]>r[v])        {for(int j=k;j<26;j++)        {         if(l[j]<r[j]&&j!=(v))          {k=j;          if(j<v)          {l[v]--;l[j]++;a[i]='A'+j;++ans;}        else{                if(r[v]>0){l[v]--;r[v]--;}              else{l[v]--;l[j]++;a[i]='A'+j;++ans;}            }          break;         }        }        }    }

TLE的:

for(int i=0;i<strlen(a);i++){    if(l[a[i]-'A'+1]>r[a[i]-'A'+1])    {for(int j=k;j<=26;j++)    {if(l[j]<r[j]&&j!=(a[i]-'A'+1))     {k=j;      if(j<a[i]-'A'+1)      {l[a[i]-'A'+1]--;l[j]++;a[i]='A'+j-1;}      else{ if(r[a[i]-'A'+1]>0){l[a[i]-'A'+1]--;r[a[i]-'A'+1]--;}            else { l[a[i]-'A'+1]--;l[j]++;a[i]='A'+j-1;                 }          }      break;    }    }    }}


C题好像也不太难,是B类的嘛,但是还没看。。一会想着看看,然后搜搜题解看看,差不多就不做了,得赶紧刷状压dp了

原创粉丝点击