题目大意:
  给你一个长度为$n(n\le10^6)$的颜色序列,其中每个颜色互不相同。两个人$A$和$B$分别从某个点出发从左往右、从右往左任意地选择颜色,然后在中间的某一点相遇。分别给出两人所选择的颜色序列,求有哪些点可能是相遇点。

思路:
  $O(n)$线性扫出对于每个点$i$,颜色序列$A$在$i$及$i$前结束时,$A$左端点最右的位置$l_i$,颜色序列$B$在$i$及$i$后结束时,$B$右端点最右的位置$r_i$。
  枚举每个点作为相遇点,判断区间$[1,l_i)$和$(r_i,n]$有没有相同颜色即可。因为$l_i$和$r_i$都是单调不降,因此复杂度还是$O(n)$的。

 #include<cstdio>
#include<cctype>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
const int N=1e6+;
int c[N],s1[N],s2[N],pos1[N],pos2[N],f[N],l[N],r[N],ans[N];
int main() {
const int n=getint(),m=getint();
for(register int i=;i<=n;i++) c[i]=getint();
s1[]=getint(),s2[]=getint();
for(register int i=;i<=s1[];i++) f[pos1[s1[i]=getint()]=i]=;
for(register int i=;i<=n;i++) {
if(pos1[c[i]]) f[pos1[c[i]]]=pos1[c[i]]==?i:f[pos1[c[i]]-];
l[i]=f[s1[]];
}
for(register int i=;i<=s2[];i++) f[pos2[s2[i]=getint()]=i]=n+;
for(register int i=n;i>=;i--) {
if(pos2[c[i]]) f[pos2[c[i]]]=pos2[c[i]]==?i:f[pos2[c[i]]-];
r[i]=f[s2[]];
}
for(register int i=;i<=m;i++) pos1[i]=pos2[i]=;
for(register int i=;i<=n;i++) pos2[c[i]]++;
for(register int i=,tmp=;i<=n;i++) {
for(register int j=l[i-];j<l[i];j++) {
if(!pos1[c[j]]++&&pos2[c[j]]) tmp++;
}
for(register int j=r[i];j>r[i-];j--) {
if(!--pos2[c[j]]&&pos1[c[j]]) tmp--;
}
if(c[i]==s1[s1[]]&&tmp) ans[++ans[]]=i;
}
printf("%d\n",ans[]);
for(register int i=;i<=ans[];i++) {
printf("%d%c",ans[i]," \n"[i==ans[]]);
}
return ;
}

[POI2014]Criminals的更多相关文章

  1. BZOJ3828 : [Poi2014]Criminals

    对于每个位置求出L[i]表示左边最大的j,满足从j开始到i-1中存在第一个子序列 R[i]表示右边最小的j,满足从j开始到i-1中存在第二个子序列 然后枚举颜色是相遇点的位置,如果L[i]左边.R[i ...

  2. POI2014题解

    POI2014题解 [BZOJ3521][Poi2014]Salad Bar 把p当作\(1\),把j当作\(-1\),然后做一遍前缀和. 一个合法区间\([l,r]\)要满足条件就需要满足所有前缀和 ...

  3. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  4. BZOJ 3524: [Poi2014]Couriers [主席树]

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1892  Solved: 683[Submit][St ...

  5. BZOJ 3524: [Poi2014]Couriers

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1905  Solved: 691[Submit][St ...

  6. [BZOJ3872][Poi2014]Ant colony

    [BZOJ3872][Poi2014]Ant colony 试题描述 There is an entrance to the ant hill in every chamber with only o ...

  7. Codeforces Round #356 (Div. 2)B. Bear and Finding Criminals(水题)

    B. Bear and Finding Criminals time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  8. 【BZOJ】【3522】【POI2014】Hotel

    暴力/树形DP 要求在树上找出等距三点,求方案数,那么用类似Free Tour2那样的合并方法,可以写出: f[i][j]表示以 i 为根的子树中,距离 i 为 j 的点有多少个: g[i][j]表示 ...

  9. 【BZOJ】【3831】【POI2014】Little Bird

    DP/单调队列优化 水题水题水题水题 单调队列优化的线性dp…… WA了8次QAQ,就因为我写队列是[l,r),但是实际操作取队尾元素的时候忘记了……不怎么从队尾取元素嘛……平时都是直接往进放的……还 ...

随机推荐

  1. Python全栈 MySQL 数据库 (SQL查询、备份、恢复、授权)

    ParisGabriel              每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图   今天接着昨天的说   索引有4种:      普通 索引 :ind ...

  2. PAT——甲级1046S:shortest Distance

    这道题,折磨了我一个多小时,前前后后写了三个算法. 1046 Shortest Distance (20 point(s)) The task is really simple: given N ex ...

  3. [hdu6434]Problem I. Count

    题目大意:$T(T\leqslant 10^5)$组数据,每组数据给你$n(n\leqslant 2\times 10^7)$,求$\sum\limits_{i=1}^n\sum\limits_{j= ...

  4. 【BZOJ 4151 The Cave】

    Time Limit: 5 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 293  Solved: 144[Submit][Status][Di ...

  5. mysql外网链接

    1:设置mysql的配置文件     /etc/mysql/my.cnf     找到 bind-address  =127.0.0.1  将其注释掉://作用是使得不再只允许本地访问:  重启mys ...

  6. Android 自定义动画 Loading

    转自:http://my.oschina.net/janson2013/blog/118558 1.定义一个ImageView 定义一个ImageView是为了装载图片,其中的图片将被rotate用来 ...

  7. Linux Ubuntu mysql 乱码

    进入mysql后,敲入命令status,就可以看到mysql的字符编码问题. 默认如下: Server characterset:    latin1 Db  characterset:    lat ...

  8. readbook:自己设计mvc框架,java类似struts2的实现

    如果你不能简单说清楚,就是你还没有完全明白.——爱因斯坦 need things: 1.操作xml文档 dom4j 等开源类库 2. dtd的验证 等知识储备 * n到n次     ? 0到1次    ...

  9. hdu 6114 百度之星复赛B T1

    Chess Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子. 一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中 ...

  10. 百度之星初赛(A)——T6

    度度熊的01世界 Problem Description 度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成. 现在给你一个n*m的图像,你需要分辨他究竟是0,还是1,或者 ...