2017.11.30第十四周周中总结

这个周仍旧尽量有空闲时间就到实验室呆着,到现在,状压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了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值