当前位置:编程学习 > C/C++ >>

2013 ACM/ICPC Asia Regional Hangzhou Online(解题报告) 正在更新

hdu 4745   Two Rabbits
   求一个环形序列的最长双回文子序列,可以先在后面补一段来破环,但仔细观察可以发现这个题并不需要破环,比如
 cdedcba  fff    ab ,可以将ba fff ab组合,然后前面剩下的还是回文的。
hdu 4747  Mex
  此题太神,找了份代码研究了一下,边看又边思考,发现了单调性,然后果断涨姿势。
 首先可以发现mex值是单调的,这个非常关键,然后我们可以每次统计sigma(i,j)(i<=j<=n)的mex的和,即所有的以i开头的区间的mex之和,也就是当前的所有前缀。
然后,我们可以每次删除最左边的那个数,这个时候我们想一下,删除这个数会对那些区间的mex产生影响,因为mex是单调的,所以我们可以找到对应的影响的区间,显然区间右端点会在下一个a[i]之前,因为这一段只有一个a[i],而且mex又是单调的,那么我们从某个右端点开始往前去掉所有的mex值比a[i]大的,去掉一个之后我们得减去相应的mex,因为我们始终维护着一个sum,表示当前所有的前缀的mex之和。具体实现的时候当然可以更加优雅。
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,