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. HDU_4826_dp

    Labyrinth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. Redis 之hash集合结构及命令详解

    1.hset key field value   作用: 把key中 filed域的值设为value 注:如果没有field域,直接添加,如果有,则覆盖原field域的值 2.hmset key fi ...

  3. IntelliJ IDEA之windows下载安装、卸载

    系统要求 系统支持:Microsoft Windows 8 / 7 / Vista / 2003 / XP(每个系统版本的 32 位和 64 位都可以) JDK 版本:Oracle JDK 1.6 或 ...

  4. 爬虫之cookie

    什么是cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第一次登 ...

  5. Jenkins+Ant+Jmeter自动化集成测试实例

    通过学习Jmeter自动化测试,接触到了Ant命令和其构建文件build.xml文件的编写,与此同时,通过将测试项目集成在jenkins上,进一步学习了jenkins的一些环境配置知识.以下是自己的初 ...

  6. Oracle存储过程及函数的练习题

    --存储过程.函数练习题 --(1)创建一个存储过程,以员工号为参数,输出该员工的工资create or replace procedure p_sxt1(v_empno in emp.empno%t ...

  7. Eclipse中使用struts标签时出错

    原因是Action和ActionForm对应文件中没有继承相应的类,具体来说: ActionForm的编写: 必须继承org.apache.struts.action.ActionForm Actio ...

  8. 让TP5.0在SWOOLE上飞起来

    TP-SWOOLE 目前,TP5.1官方已经提供了think-swoole2.0,集成程度以前优雅很多,不过5.0的集成方式确实有些鸡肋.所以看了下2.0,为5.0开发了一个扩展包,可以采用compo ...

  9. 198. House Robber(动态规划)

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

  10. mysql-索引、导入、导出、备份、恢复

    1.索引 索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容. 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行 ...