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. Cookie的实现

    Cookie是web server下发给浏览器的任意的一段文本,在后续的http 请求中,浏览器会将cookie带回给Web Server.同时在浏览器允许脚本执行的情况下,Cookie是可以被Jav ...

  2. 基于python xlsxwriter、xlrd 生成测试报告

    import xlsxwriter,xlrd ''' 思路: 1.获取数据 2.整合数据 3.写入文件 ''' #筛选 def filt(category,table,filt_name=None,r ...

  3. 浏览器加载 CommonJS 模块的原理与实现 (阮一峰大哥的 http://www.ruanyifeng.com/blog/2015/05/commonjs-in-browser.html)

    就在这个周末,npm 超过了 cpan ,成为地球上最大的软件模块仓库. npm 的模块都是 JavaScript 语言写的,但浏览器用不了,因为不支持 CommonJS 格式.要想让浏览器用上这些模 ...

  4. @Override注解

    @Override注解对于代码可读性的提升十分巨大 而且良好的可读性是一个优秀程序员必备的基础素养

  5. Notepad++运行JAVA代码

    第一种方法: 工具栏->运行  点击后选择运行 1.在运行窗口中输入: cmd /k javac "$(FULL_CURRENT_PATH)" & echo 编译成功 ...

  6. [forward]警惕UNIX下的LD_PRELOAD环境变量

    From: https://blog.csdn.net/haoel/article/details/1602108 警惕UNIX下的LD_PRELOAD环境变量 前言 也许这个话题并不新鲜,因为LD_ ...

  7. Heaters (codeforces 1066B)

    贪心题 策略 在最左边设置一个array 0,每一次从右往左,如果有heater的话就寻找heater左边界是不是小于等于目前的上一个heater的右边界,如果没有一个这样的,那么就直接输出-1 代码 ...

  8. MySQL(端口3306)

    MySQL(二进制)安装: 下载地址:http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.49-linux2.6-x86_64.tar.gz ...

  9. 升级 Linux 内核版本(编译源代码)

    升级内核版本(自己编译源码) 从 linux 官网 https://www.kernel.org/ 下载内核源码 解压 tar -xvf linux-4.16.8.tar.xz cd linux-4. ...

  10. Codeforces Round #417 (Div. 2)——ABCE

    题目链接 题面有点长需耐心读题. A.一个人行道上的人被撞有4种情况 1.所在车道有车驶出 2.右边车道有左转车 3.左边车道有右转车 4.对面车道有直行车 #include <bits/std ...