传送门

1.模拟

easy

#include <cstdio>
#define N 500001 int n, m;
int X[N], Y[N], x[N], y[N], a = 1, b = 1, p, q;
char s[N][1]; int main()
{
int i;
scanf("%d %d", &n, &m);
for(i = 1; i <= n; i++) scanf("%d %d", &X[i], &Y[i]);
for(i = 1; i <= m; i++)
{
scanf("%s", s[i]);
if(s[i][0] == 'm') scanf("%d %d", &x[i], &y[i]);
}
for(i = m; i >= 1; i--)
if(s[i][0] == 'm')
{
p += x[i];
q += y[i];
}
else if(s[i][0] == 'x')
{
a *= -1;
p *= -1;
}
else
{
b *= -1;
q *= -1;
}
for(i = 1; i <= n; i++) printf("%d %d\n", X[i] * a + p, Y[i] * b + q);
return 0;
}

 

2.矩阵优化

详见 Matrix67

#include <cstdio>
#include <cstring>
#define N 500001 int n, m;
int X[N], Y[N], x[N], y[N];
char s[N][2]; struct Matrix
{
int n, m;
int a[11][11];
Matrix()
{
n = m = 0;
memset(a, 0, sizeof(a));
}
}sum; inline Matrix operator * (const Matrix x, const Matrix y)
{
Matrix ret;
ret.n = x.n;
ret.m = y.m;
int i, j, k;
for(i = 1; i <= x.n; i++)
for(j = 1; j <= y.m; j++)
for(k = 1; k <= y.n; k++)
ret.a[i][j] += x.a[i][k] * y.a[k][j];
return ret;
} int main()
{
int i;
Matrix t;
scanf("%d %d", &n, &m);
sum.n = sum.m = 3;
sum.a[1][1] = sum.a[2][2] = sum.a[3][3] = 1;
for(i = 1; i <= n; i++) scanf("%d %d", &X[i], &Y[i]);
for(i = 1; i <= m; i++)
{
scanf("%s", s[i]);
if(s[i][0] == 'm') scanf("%d %d", &x[i], &y[i]);
}
for(i = m; i >= 1; i--)
{
memset(t.a, 0, sizeof(t.a));
t.n = t.m = 3;
t.a[1][1] = t.a[2][2] = t.a[3][3] = 1;
if(s[i][0] == 'm') t.a[1][3] = x[i], t.a[2][3] = y[i];
if(s[i][0] == 'x') t.a[1][1] = -1;
if(s[i][0] == 'y') t.a[2][2] = -1;
sum = t * sum;
}
for(i = 1; i <= n; i++)
{
memset(t.a, 0, sizeof(t.a));
t.n = 3;
t.m = t.a[3][1] = 1;
t.a[1][1] = X[i];
t.a[2][1] = Y[i];
t = sum * t;
printf("%d %d\n", t.a[1][1], t.a[2][1]);
}
return 0;
}

  

[luoguP2129] L国的战斗续之多路出击(模拟 || 矩阵)的更多相关文章

  1. 洛谷 P2129 L国的战斗续之多路出击(模拟)

    P2129 L国的战斗续之多路出击 题目背景 广而告之:背景见其他L国的战斗!!大家一起刷 题目描述 这一次,L国决定军队分成n组,分布在各地,若以L国为原点,可以看作在一个直角坐标系内.但是他们都受 ...

  2. 【题解】L 国的战斗续之多路出击 [P2129]

    [题解]L 国的战斗续之多路出击 [P2129] 传送门: \(L\) 国的战斗续之多路出击 \([P2129]\) [题目描述] 给出 \(n\) 个坐标,\(m\) 个指令,指令处理顺序应是从后往 ...

  3. P2129 L国的战斗续之多路出击

    题目描述 这一次,L国决定军队分成n组,分布在各地,若以L国为原点,可以看作在一个直角坐标系内.但是他们都受统一的指挥,指令部共发出m个命令.命令有移动.上下转移和左右转移(瞬移??),但是由于某些奇 ...

  4. AC日记——L国的战斗之间谍 洛谷 P1916

    题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间谍前往I国,于是,选人工作就落到了你身上. 你现在有N个人选,每个人都有这样一些数据:A(能得到 ...

  5. 洛谷 P1910 L国的战斗之间谍(水题日常)

    题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间谍前往I国,于是,选人工作就落到了你身上. 你现在有N个人选,每个人都有这样一些数据:A(能得到 ...

  6. 洛谷——P1910 L国的战斗之间谍

    https://www.luogu.org/problem/show?pid=1910#sub 题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间 ...

  7. 洛谷 P1913 L国的战斗之伞兵

    P1913 L国的战斗之伞兵 题目背景 L国即将与I国发动战争!! 题目描述 为了在敌国渗透作战,指挥官决定:派出伞兵前往敌国!然而敌国的风十分强烈,能让伞兵在同一高度不停转悠,直到被刮到一个无风区… ...

  8. 洛谷 P1911 L国的战斗之排兵布阵

    P1911 L国的战斗之排兵布阵 题目背景 L国即将与I国发动战争!! 题目描述 L国的指挥官想让他的每一个军营都呈现出国徽形——“L”形(方向无所谓).当然,他的指挥营除外(这叫做个性),他想不出该 ...

  9. 洛谷 P1910 L国的战斗之间谍

    洛谷 P1910 L国的战斗之间谍 传送门 思路 二维背包模板题 三维肯定会爆掉,所以换二维 代码 #include <bits/stdc++.h> #define N 1111 usin ...

随机推荐

  1. C. Memory and De-Evolution 逆向思维

    http://codeforces.com/contest/712/problem/C 要使得把三角形由边长n变成m,等价于由m变成n 如果是从n变成m,则很难判断每次判断变成多少.比如22的变成4, ...

  2. Java-每日编程练习题③

    一.计算圆周率 中国古代数学家研究出了计算圆周率最简单的办法: PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17...... 这个算式的结果会无限接近于圆周率的值, ...

  3. sql 删除重复数据

    DELETE a FROM tbBuilding a WHERE EXISTS (SELECT 1 FROM tbBuilding b WHERE b.Province = a.Province AN ...

  4. 洛谷 P1006 传纸条

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...

  5. Android(java)学习笔记167:横竖屏切换时Activity的生命周期

    1.横竖屏切换的生命周期     默认情况下横竖屏切换,先销毁再创建 2.有的时候,默认情况下的横竖屏切换(先销毁再创建),对应用户体验是不好的,比如是手机游戏横竖屏切换对游戏体验非常不好,下面两种方 ...

  6. Python3中的输入输出

    input()函数 我们可以通过Python3解释器查看Python3中input()的含义: >>> type(input) <class 'builtin_function ...

  7. vue.js中的表单radio,select,textarea的v-model属性的用法

    只要是表单元素,其值已经不会再用value来定义了,但是placeholder还是可以用来设置默认值. section1--input:type="text" type=" ...

  8. sed替换字符串中的某些字符

    test.txt原文内容 http://jsldfjaslfjsldfjasl/test?jlsdfjsalfjslfd 使用sed替换 sed -ri 's/(http:\/\/)[^\/]*(\/ ...

  9. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  10. poj2065 SETI

    题目描述: 多组数据,每次给出一个模数$p$和一个表示答案的字符串, 相当于给出一个方程组:$$a_1*1^{1}+a_2*1^{2}+……+a_n*1^{n}=f_1$$ $$a_1*2^{1}+a ...