题目名称 2792. 线性变换
输入输出 transformationmadrid.in/out
难度等级 ★★★☆
时间限制 3000 ms (3 s)
内存限制 256 MiB
测试数据 10
题目来源 GravatarAAAAAAAAAA 于2017-09-02加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:6, 提交:9, 通过率:66.67%
GravatarHale 100 1.339 s 41.13 MiB C++
GravatarFoolMike 100 1.926 s 27.78 MiB C++
GravatarsssSSSay 100 2.148 s 26.25 MiB C++
GravatarAAAAAAAAAA 100 3.343 s 61.33 MiB C++
GravatarArrow 100 3.382 s 42.28 MiB C++
Gravatar梦那边的美好ET 100 5.712 s 53.52 MiB C++
Gravatar梦那边的美好ET 30 2.426 s 53.52 MiB C++
Gravatar梦那边的美好ET 30 2.502 s 53.52 MiB C++
GravatarAAAAAAAAAA 0 0.791 s 61.33 MiB C++
关于 线性变换 的近10条评论(全部评论)
终于填了学校模拟赛的坑,mike ORZ
GravatarHale
2019-08-28 12:17 3楼
%%%这是一道NOIP的模拟题,当然比较水了
GravatarAAAAAAAAAA
2017-09-05 08:17 2楼
crisis弱化版,差评
矩阵大水题还放什么啊,删掉算了
GravatarFoolMike
2017-09-04 20:47 1楼

2792. 线性变换

★★★☆   输入文件:transformationmadrid.in   输出文件:transformationmadrid.out   简单对比
时间限制:3 s   内存限制:256 MiB

【题目描述】


平面上有N个点,编号为1~N。其中,编号为i的点的坐标为(xi,yi)。下面定义一些变换:

X:将点i关于x轴翻转

Y:将点i关于y轴翻转

O:将点i关于直线y=x翻转

M:将点i的横坐标与纵坐标各加一个数

R:将点i绕原点逆时针旋转a度(角度)

给出一个大小为M的变换序列,每个变换以如下形式给出:

X l r : 将编号为[l,r]的所有点进行X变换

Y l r : 将编号为[l,r]的所有点进行Y变换

O l r : 将编号为[l,r]的所有点进行O变换

M l r a b : 将编号为[l,r]的所有点进行M变换,横坐标加a,纵坐标加b

R l r a : 将编号为[l,r]的所有点进行R变换,旋转角度为a度

输出编号为1~N的点经过所有变换后的坐标。


【输入格式】


第一行一个整数N,为总共的点数。

2~N+1行每行两个实数,第i行为编号为i-1的点的初始坐标。

接下来一行一个整数M,为操作总数。

接下来M行每行按上述形式给出一个操作。


数据规模约定:其中1<=N,M<=100000,每个点的横纵坐标的绝对值任意时刻均小于100000,操作序列中出l和r以外其余的数均为实数,输入时最多保留2位小数,1<=l<=r<=N,0<=a<360。


【输出格式】

输出N行,每行两个实数,第i行为点i经过操作后的坐标。(保留两位小数)

【样例输入】

3

2.1 2

-2.4 2.5

0.7 -3.1

5

X 1 3

M 1 3 3 6

R 1 3 90

O 1 2

Y 1 1

【样例输出】

-5.10 -4.00

0.60 -3.50

-9.10 3.70

【提示】

数据有梯度。

【来源】

在此键入。