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

题目背景

广而告之:背景见其他L国的战斗!!大家一起刷

题目描述

这一次,L国决定军队分成n组,分布在各地,若以L国为原点,可以看作在一个直角坐标系内。但是他们都受统一的指挥,指令部共发出m个命令。命令有移动、上下转移和左右转移(瞬移??),但是由于某些奇奇怪怪的原因,军队收到命令总是有延迟,为了方便,军方已经写好一个栈(那还要我干嘛,自己都写好不就行了?),所以你要处理的顺序,应该是从后往前。

输入输出格式

输入格式:

输入文件army.in包括n+m+1行

第一行两个整数n、m

接下来n行

第i行有两个整数xi yi表示第i支军队的位置。

又是m行

每行首先是一个字符 C

若C为m 则紧跟两个整数 p q 表示把每支军队的位置从(xi,yi)移到(xi+p.yi+q)

若C为x 则表示把每支军队的位置从(xi,yi)移到(-xi,yi)

若C为y 则表示把每支军队的位置从(xi,yi)移到(xi,-yi)

输出格式:

输出文件army.out包含n行

第i行有两个整数xi、yi,表示第i支军队移动后的位置。

输入输出样例

输入样例#1:

3 3
0 0
4 -3
6 7
x
m -1 2
y
输出样例#1:

1 2
-3 5
-5 -5

说明

对于30%的数据 1≤n≤1000 1≤m≤1000

对于100%的数据 1≤n≤500000 1≤m≤500000 Ai在longint范围内

标签是矩阵乘法啊,但蒟蒻不会,只会模拟...还只会80分模拟...太弱了!!!

#include<iostream>
#include<cstdio>
#include<cstring> #define N 500007 using namespace std;
int n,m,tot=,cnt;
int a[N][],pos[N];
struct node
{
char c;
int x,y;
}com[N]; struct Lim
{
int x,y;
}lim[N]; inline int init()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int main()
{
n=init();m=init();
for(int i=;i<=n;i++)
a[i][]=init(),a[i][]=init();
for(int i=m;i>;i--)
{
cin>>com[i].c;
if(com[i].c=='m') com[i].x=init(),com[i].y=init();
}
for(int i=;i<=m;i++)
{
if(com[i].c=='x') lim[tot].x++;
else if(com[i].c=='y') lim[tot].y++;
else tot++,pos[tot-]=i;
}
for(int i=;i<=tot;i++)
{
if(lim[i].x%!=) for(int j=;j<=n;j++) a[j][]=-a[j][];
if(lim[i].y%!=) for(int j=;j<=n;j++) a[j][]=-a[j][];
for(int j=;j<=n;j++)
{
a[j][]+=com[pos[i]].x;
a[j][]+=com[pos[i]].y;
}
}
for(int i=;i<=n;i++)
printf("%d %d\n",a[i][],a[i][]);
}

80分

想到了提前记录总和,但考虑到取反的时候会出问题,但没想到去反可以吧总和也取反...太弱了!!!!

#include<iostream>
#include<cstdio>
#include<cstring> using namespace std;
const int maxn=,INF=;
int X[maxn],Y[maxn],a[maxn],b[maxn];
char cmd[maxn]; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int main()
{
int N=read(),M=read(),p=,q=,curx=,cury=;
char c;
for(int i=; i<=N; i++) X[i]=read(),Y[i]=read();
for(int i=; i<M; i++)
{
c=getchar();
while(c!='x'&&c!='m'&&c!='y') c=getchar();
cmd[i]=c;
if(c=='m')
{
a[i]=read();
b[i]=read();
}
}
for(int i=M-; i>=; i--)
{
if(cmd[i]=='x') p=-p,curx=-curx;
else if(cmd[i]=='y') q=-q,cury=-cury;
else
{
p+=a[i];
q+=b[i];
}
}
for(int i=; i<=N; i++) printf("%d %d\n",X[i]*curx+p,Y[i]*cury+q);
return ;
}

洛谷 P2129 L国的战斗续之多路出击(模拟)的更多相关文章

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

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

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

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

  3. [luoguP2129] L国的战斗续之多路出击(模拟 || 矩阵)

    传送门 1.模拟 easy #include <cstdio> #define N 500001 int n, m; int X[N], Y[N], x[N], y[N], a = 1, ...

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

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

  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国的战斗之间谍

    //二维费用01背包 #include<bits/stdc++.h> using namespace std; ; ; ; int v1[maxn],v2[maxn],w[maxn],n, ...

随机推荐

  1. JavaScript的基础数据类型和表达式

    Java Script的基础数据类型和表达式 基本的数据类型: number(数值)类型:可分为整数和浮点数 string(字符)类型:是用单引号“'”或者双引号“"”来说明的. boole ...

  2. cstringlist

    CStringList类成员 构造 CStringList 构造一个空的CString对象列表   首/尾访问 GetHead 返回此列表(不能是空的)中头部的元素 GetTail 返回此列表(不能是 ...

  3. WPF在win7运行时报'Initialization of 'System.Windows.Setter' threw an exception.'

    写的一个WPF程序,在win10运行好好的,在win7就报'Initialization of 'System.Windows.Setter' threw an exception.' 原来是xaml ...

  4. session_start(): open(/var/lib/php/session/sess_tlrp3cpro7gun9uhno8n6futr3, O_RDWR)

    在安装一个网站,结果连接上数据库了但是一直报错.下面贴报错内容和图 错误提示 系统:PHP (Linux) 错误类型:WARNING 内容:session_start(): open(/) 错误位置: ...

  5. Centos初始化硬盘分区、挂载

    刚刚买了一台服务器,刚买的服务器的数据盘都是需要自己来分区的,下面就记录一下操作. 通过命令fdisk-l查看硬盘信息 可以看到有两块硬盘/dev/vda和/dev/vdb,启动vda是系统盘vdb是 ...

  6. CAD把实体放到当前选择集中

    主要用到函数说明: _DMxDrawX::AddCurrentSelect 把实体放到当前选择集中,详细说明如下: 参数 说明 LONGLONG lId 实体id VARIANT_BOOL isSho ...

  7. 初学者怎么才能快速学会Python?

    提起对Python的印象,除了全能之外恐怕就是简单易学了.很多人都在推荐新手学Python入门,毕竟语法简单.语句简洁,所谓“人生苦短我用Python”绝不是一句空话.不过也不能忽视一点:Python ...

  8. Git环境部署

     部署git 服务器环境   系统环境准备 192.168.30.25   master     git   gitlab 192.168.30.26   client      git 关闭防火墙 ...

  9. 洛谷——P2657 [SCOI2009]windy数

    P2657 [SCOI2009]windy数 题目大意: windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和 ...

  10. CF36E Two Paths (欧拉回路+构造)

    题面传送门 题目大意:给你一张可能有重边的不保证联通的无向图,现在要在这个图上找出两条路径,恰好能覆盖所有边一次,根据边的编号输出方案,无解输出-1 一道很不错的欧拉路径变形题 首先要知道关于欧拉路径 ...