题目名称 1623. [ZJOI 2008]无序运动Movement
输入输出 bzoj_1039.in/out
难度等级 ★★★☆
时间限制 5000 ms (5 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatar提莫 于2014-05-08加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:1, 提交:1, 通过率:100%
Gravatarstdafx.h 100 2.720 s 119.32 MiB C++
关于 无序运动Movement 的近10条评论(全部评论)

1623. [ZJOI 2008]无序运动Movement

★★★☆   输入文件:bzoj_1039.in   输出文件:bzoj_1039.out   简单对比
时间限制:5 s   内存限制:512 MiB

【题目描述】

D博士对物理有着深入的研究,经典物理、天体物理、量子物理都有着以他的名字命名的定理。最近D博士着迷于研究粒子运动的无规则性。对圣经深信不疑的他相信,上帝创造的任何事物必然是有序的、有理可循的,而不是无规则的、混沌的。 经过长时间的研究,D博士找到了很多出现相当频繁的轨迹片断,他把这些轨迹片断储存在一个很大的数据库内。他需要你帮助他写一个程序,对于一个给出的粒子运动轨迹,统计数据库中每个轨迹片断的出现的次数。 为清楚起见,我们定义一个粒子的轨迹为二维平面上的一个点列(P1, P2, … PN)。点列P的一个子列[i, j]定义为P中一段连续的子序列(Pi, Pi+1, … Pj)。点列P的一个子列[u, v]被称为点列Q = (Q1, Q2 … Qv-u+1)在P中的一次出现,当且仅当Q经过有限次的平移、旋转、翻转、放缩之后得到Q’满足Q’k = Pu+k-1(k = 1 … u – v + 1)。 对平面X-Y进行四种操作的解释 平移 设平移向量为(dx, dy),则任意点(x,y)平移后的结果为(x+dx, y+dy) 旋转 设旋转角为t,则任意点(x,y)旋转后的结果为 (x cos t – y sin t, x sin t + y cos t) 翻转 任意点(x,y) 翻转后的结果为(x, -y) 放缩 设放缩比例为p (p ≠ 0),则任意点(x,y)放缩后的结果为(px, py)

【输入格式】

第一行两个整数N、M,分别描述待处理的粒子运动轨迹的点列大小与数据库内的轨迹片断个数。 接下来M行依次给出每个轨迹片断。每行先是一个正整数K,表示该轨迹片断点列的长度。然后2K个整数,依次描述点列中的K个点的横坐标与纵坐标。接下来一行2N个整数,依次描述待处理的粒子运动轨迹的点列中N个点的横坐标与纵坐标。 注:输入中的每条轨迹中任意相邻两点不会相同。

【输出格式】

应包含M行,依次给出每个片段在待处理运动轨迹中的出现次数。

【样例输入】

3 2
2 17 0 10 1
3 0 0 1 0 1 -1
0 0 1 0 1 1

【样例输出】

2
1

【题目来源】

耒阳大世界(衡阳八中) OJ 1039