知方号

知方号

#10259. 「2023CSP普及组模拟<计蒜客官网题库>

【谨遵题解之意——肆】 鎏金神烟出品 题目部分 (注:题目皆来自tywzoj.top,如有侵权,请联系删除!)

题目描述

在枪战类游戏里每一把枪在开枪时都会有后坐力,这一后坐力会使玩家的枪不由自主地随机移动,我们称之为轨迹偏移。 这类游戏里为了模拟真实情况,一把枪有一个弹匣,弹匣中装有n发子弹;每射出n发子弹,玩家会换上下一个弹匣。 在游戏中,为了程序实现方便,同一把枪的后坐力导致的轨迹偏移往往是固定的,并且这一轨迹偏移序列的周期为弹匣的容量。因此,我们可以记住这把枪的轨迹偏移,然后用一个相反的鼠标移动抵消这一偏移,这样就实现了「控枪」。 于是,要达到枪枪必中,只需要令每一次移动鼠标追踪目标时的位移向量等于敌人的位移向量加上上一枪的轨迹偏移向量的相反向量。

输入格式 首先是一行两个正整数 n n n, m m m,分别表示枪的轨迹偏移周期和需要开的枪数。之后是 n − 1 n-1 n−1行,每行两个整数,分别表示第 i i i发子弹射出后的轨迹偏移。由于第 n n n次射击后要换弹匣,所以不考虑第 n n n次射击产生的轨迹偏移,因此显然每个弹匣的第1枪没有轨迹偏移。之后是 m m m行,每行两个整数,分别表示每一次开枪时敌人所在的位置。 输出格式 输出 m行,每行两个整数 a n s x , a n s y ansx,ansy ansx,ansy ,表示开第 i i i枪所需的鼠标位移向量。我们认为开第一枪之前鼠标位于 ( 0 , 0 ) . (0,0). (0,0).

i n p u t 1 input1 input1

3 33 3-3 -31 10 01 1

o u t p u t 1 output1 output1

1 1-4 -44 4

i n p u t 2 input2 input2

4 62 27 89 9-1 -51 1-2 -2-4 -43 32 2

o u t p u t output output

-1 -50 4-10 -11-11 -117 7-3 -3

大家看完题,先试着做亿做( b u s h i bushi bushi),再来看题解吧! 题解部分

先读题 试着理解一下那些反人类语言,前面基本是废话,最后一段说:只需要令每一次移动鼠标追踪目标时的位移向量等于敌人的位移向量加上上一枪的轨迹偏移向量的相反向量,很多人看了题都会一脸蒙圈,这个时候不要怕,结合样例看更好哦。 根据题中可知,先要定义ansx与ansy来记录要移动的数量,方便输出。 接着定义数组来存储固定的开枪轨迹偏移和敌人的移动

int ax[1000005],ay[1000005],bx[1000005],by[1000005];//定义开枪的轨迹偏移和敌人的移动

由题可知,要输入 n − 1 n-1 n−1行,这是因为第一发子弹可以看做没有偏移值

ax[1]=0;//第一发x偏移值为0ay[1]=0;//第一发y偏移值为0 for(int i=2;i

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。