[luoguP2129] L国的战斗续之多路出击(模拟 || 矩阵)
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国的战斗续之多路出击(模拟 || 矩阵)的更多相关文章
- 洛谷 P2129 L国的战斗续之多路出击(模拟)
P2129 L国的战斗续之多路出击 题目背景 广而告之:背景见其他L国的战斗!!大家一起刷 题目描述 这一次,L国决定军队分成n组,分布在各地,若以L国为原点,可以看作在一个直角坐标系内.但是他们都受 ...
- 【题解】L 国的战斗续之多路出击 [P2129]
[题解]L 国的战斗续之多路出击 [P2129] 传送门: \(L\) 国的战斗续之多路出击 \([P2129]\) [题目描述] 给出 \(n\) 个坐标,\(m\) 个指令,指令处理顺序应是从后往 ...
- P2129 L国的战斗续之多路出击
题目描述 这一次,L国决定军队分成n组,分布在各地,若以L国为原点,可以看作在一个直角坐标系内.但是他们都受统一的指挥,指令部共发出m个命令.命令有移动.上下转移和左右转移(瞬移??),但是由于某些奇 ...
- AC日记——L国的战斗之间谍 洛谷 P1916
题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间谍前往I国,于是,选人工作就落到了你身上. 你现在有N个人选,每个人都有这样一些数据:A(能得到 ...
- 洛谷 P1910 L国的战斗之间谍(水题日常)
题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间谍前往I国,于是,选人工作就落到了你身上. 你现在有N个人选,每个人都有这样一些数据:A(能得到 ...
- 洛谷——P1910 L国的战斗之间谍
https://www.luogu.org/problem/show?pid=1910#sub 题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间 ...
- 洛谷 P1913 L国的战斗之伞兵
P1913 L国的战斗之伞兵 题目背景 L国即将与I国发动战争!! 题目描述 为了在敌国渗透作战,指挥官决定:派出伞兵前往敌国!然而敌国的风十分强烈,能让伞兵在同一高度不停转悠,直到被刮到一个无风区… ...
- 洛谷 P1911 L国的战斗之排兵布阵
P1911 L国的战斗之排兵布阵 题目背景 L国即将与I国发动战争!! 题目描述 L国的指挥官想让他的每一个军营都呈现出国徽形——“L”形(方向无所谓).当然,他的指挥营除外(这叫做个性),他想不出该 ...
- 洛谷 P1910 L国的战斗之间谍
洛谷 P1910 L国的战斗之间谍 传送门 思路 二维背包模板题 三维肯定会爆掉,所以换二维 代码 #include <bits/stdc++.h> #define N 1111 usin ...
随机推荐
- Smart SVN的使用
最近项目使用了SVN,为管理代码起到了很好的作用!但是,对于很多初步使用着,还是非常不容易! 公司使用的是Smart SVN 客户端. Smart SVN 这个工具总体还是挺不错的! 在代码的提交和获 ...
- Oracle | Java日期处理
public class Test{ public static void main (String args []){ j ...
- java nio 读取大文件
package com.yao.bigfile; import java.io.File; import java.io.IOException; import java.io.RandomAcces ...
- 骑芯供应链(W 笔试)
单选题 1.调用本身构造方法 答案:this(X) 2.若y=3,a=2,b=4,运行y+=a++/--b,求y的值 答案: 3.不能控制servlet生命周期的方法是? 选项:init().serv ...
- MFC中EDIT控件实现换行
\n是C下的回撤换行.在MFC下得用\r\n.
- 使用Spring AOP切面解决数据库读写分离
http://blog.jobbole.com/103496/ 为了减轻数据库的压力,一般会使用数据库主从(master/slave)的方式,但是这种方式会给应用程序带来一定的麻烦,比如说,应用程序如 ...
- PHP16 PHP访问MySQL
学习要点 PHP访问MySQL配置 PHP访问MySQL函数介绍 足球赛程信息管理 PHP访问MySQL配置 PHP.ini配置文件确认以下配置已经打开 extension=php_mysql.dll ...
- 重载操作符 'operator'
operator 是 C++ 的(运算符的)重载操作符.用作扩展运算符的功能. 它和运算符一起使用,表示一个运算符函数,理解时应将 [operator+运算符] 整体上视为一个函数名. 要注意的是: ...
- Linux下QT、cannot find -lGL、
近日在虚拟机下的QT5.11.2安装出现了一个bug,折腾好久才搞定. 环境:vmware + debain 9.5 + qt5.11.2 . QT_DIR = /Qt5.11.2/5.11.2/gc ...
- Ubuntu14.04环境下Qt5.5以上版本无法输入中文的解决教程
1.前言 由于Qt5.4之后对之前的Qt5版本不再二进制兼容,所以网上很多简单的旧的办法已经失效了,所以本教程的办法是重新编译fcitx-qt5,生成最新的libfcitxplatforminputc ...