摘要: http://codeforces.com/contest/368/problem/D题意:有a、b两个数组,a数组有n个数,b数组有m个数,现在给出一个p,要你找出所有的位置q,使得位置q q+p q+2*p .....q+(m-1)*p 经过一定的操作(不改变数据大小)全等于b数组。思路:首先肯定对a数组离散,然后二分对a、b数组分配好离散后的值。其实我们只需要枚举0————p位置,哈希记录,然后从q----一直滚到q(m-1)*p>=n,对于一个数据,出来第一个数,进去最后一个数。这样,如果没有避免对b数组扫描一次,那么还是会超时,额,我在这里超时了几次。这个题目的核心就是如何避免 阅读全文
posted @ 2013-12-02 15:35 紫忆 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个元素,开始每个元素自己一栈,有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈。第二种操作是询问含有x元素下面有多少个元素。6M 1 6C 1M 2 4M 2 6C 3C 4输出:102思路:这道题,说不上很难,额,解决它也的确花了比较长的时间。询问x元素下面有多少个元素,那么我只需要统计x元素上面有多少个元素,再用x所在的并查集的根节点的元素个数减去x元素上面的元素个数,结果就出来了......当然,还是有些细节地方要说说的,在路径压缩的时候,有个rang[][3],其中rank[x][0],代表元素x上面有多少个元素,rank[x][1]代表元素x下面有多少个元素, 阅读全文
posted @ 2013-12-02 14:57 紫忆 阅读(756) 评论(0) 推荐(0) 编辑