BZOJ 4236 \"JOIOJI\"(前缀和+map)

匿名 (未验证) 提交于 2019-12-02 23:49:02

传送门:

  [1]:BZOJ

  [2]:洛谷

 

  定义数组 a,b,c 分别表示 'J' , 'O' , 'I' 的前缀和;

  要想使区间 (L,R] 满足条件当且仅当 a[R]-a[L] = b[R]-b[L] = c[R]-c[L];

  提前预处理出 a,b,c 数组后;

  对于 i 位置,查找之前是否含有满足 ai-bi = aj-bj && bi-ci = bj-cj 的位置 j,并且 j 尽可能的小;

  如何高效的查找呢?

  使用 map<pair<int ,int > , int >;

  对于之前处理过的位置 j ,将 aj-bj 和 bj-cj 存入到 pair<int ,int > 中,每次查找是否存在 (ai-bi,bi-ci) 即可;

  如果存在,求解当前答案,反之,将其加入到map中;

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!