F. Bouncy Ball(Codeforces Round 859 (Div. 4))
题目链接:Problem - F - Codeforceshttps://codeforces.com/contest/1807/problem/F
题意:给你一个n*m大小的网格,再给你一个起始点和目的点,然后一个起始方向,这个起始点能不能在反弹的过程中到达目标点。反弹的过程中是碰到边界,折射性反弹。
思路:
首先反弹一定是有一个周期的,最多不过n*m.判断如果出现一次周期直接输出“-1”即可,就是不能到达目的点,周期判断就是这个点有没有再次出现并且方向与之前出现的一致,否则是不能够视为周期的。然后就是模拟就行了,不是很难。
AC代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
map<int,map<int,int> >a;
void solve(){a.clear();int n,m;cin>>n>>m;int l,r,ll,rr;char aa,bb;cin>>l>>r>>ll>>rr>>aa>>bb;if(ll==l&&rr==r){cout<<0<<"\n";return ;}int sum=0;while(1){int dx=0,dy=0;int flag=0;if((aa=='D'&&l<n)){dx=1;} else if((aa=='U'&&l==1)){aa='D';sum++;flag=1;dx=1;}else if((aa=='U'&&l>1)) dx=-1;else if((aa=='D'&&l==n)){sum++;flag=1;dx=-1;aa='U';}if((bb=='L'&&r>1)) dy=-1;else if((bb=='R'&&r==m)){if(flag==0) sum++;flag=1;dy=-1;bb='L';}else if((bb=='R'&&r<m)) dy=1;else if((bb=='L'&&r==1)){if(flag==0) sum++;flag=1;dy=1;bb='R';}if(flag==1){if(a[l][r]==(int)(aa+bb)){cout<<"-1\n";return ;} else {a[l][r]=(int)(aa+bb);}} l+=dx;r+=dy;if(l==ll&&r==rr){cout<<sum<<"\n";return ;} }
}
signed main(){int t;cin>>t;while(t--){solve();}
}
F. Bouncy Ball(Codeforces Round 859 (Div. 4))相关推荐
- F. Strange Array(Codeforces Round #727 (Div. 2))(主席树)
F. Strange Array 给定一个长度为nnn的数组aaa,1≤ai≤n1 \leq a_i \leq n1≤ai≤n,对于每个aia_iai,我们要找到一个l≤i,r≥il \leq i ...
- E. Company(Codeforces Round #520 (Div. 2))
E. Company 给定一颗有nnn个节点的树,有mmm次询问,每次询问给定[l,r][l, r][l,r],我们可以选择删除其中的一个点ppp,然后找到一个深度最深的rtrtrt,使得剩下的点都在 ...
- D. Boboniu Chats with Du(Codeforces Round #664 (Div. 2) )
感受 怎么这么傻逼的题目,我现场A不了呢?看来还有不少提升的空间怎么这么傻逼的题目,我现场A不了呢?看来还有不少提升的空间怎么这么傻逼的题目,我现场A不了呢?看来还有不少提升的空间 题意 简单来说,给 ...
- D. Cut and Stick(Codeforces Round #716 (Div. 2))
D. Cut and Stick 给定一个长度为nnn的数组,里面元素为a1,a2,a3,-,an−1,an,(1≤ai≤n)a_1, a_2, a_3, \dots, a_{n- 1}, a_n, ...
- A Perfectly Balanced String?(Codeforces Round #785 (Div. 2))
A Perfectly Balanced String? Let's call a string s perfectly balanced if for all possible triplets ( ...
- Codeforces Round #777 (Div. 2) 简训
Codeforces Round #777 (Div. 2) 简训 导语 涉及的知识点 题目 A Madoka and Math Dad B Madoka and the Elegant Gift C ...
- Codeforces Round #815 (Div. 2)
Codeforces Round #815 (Div. 2) 传送门 :Codeforces Round #815 (Div. 2) 之前都是108键的键盘,最近在家用的68,两三天了还是非常不顺手, ...
- 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)
题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...
- 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)
题意与分析 (CodeForces - 603A) 这题真的做的我头疼的不得了,各种构造样例去分析性质... 题意是这样的:给出01字符串.可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所 ...
最新文章
- 深入理解 MySQL 索引底层原理
- 阿里大数据分析与应用(part7)--机器学习平台PAI
- Java 字符串与整数之间的互相转换
- WinForm DataGridView 绑定泛型List(ListT)/ArrayList不显示的原因和解决
- 为什么微软账号被暂时停用_微软向Win10 20H2推出测试版更新KB4586853修复多种已知问题...
- 【docker学习之二】Docker的基本概念
- python输入一行字符串、剔除其中所有小写字母后输出_1. 输入一行字符串,将其中的非字母字符剔除,然后将字母全部转换为大写字母,并...
- 多边形区域填充算法_花一分钟看一个案例,PPT中图片填充形状的应用
- 麦克纳姆轮运动特性分析(图片版)
- android 带边框的arc,极细边框(1px边框)实现方式
- 信息系统项目管理师(2022年) —— 考试大纲
- windows10升级助手_微软官网下载与安装windows10系统的操作步骤
- keil v5 No Ulink2/Me Device Found 的解决方法
- 码支付源码完整版-安装环境配置
- C语言实现求n的阶乘(n!),阶乘的和。
- Ubuntu 1804 升级内核
- 八行代码实现图像分类-神一样的Mathematica
- python中a* b是什么意思_python的 a,b=b,a+b 和 a=b b=a+b 的区别
- containerd使用
- 网站色调色彩搭配之情感表现