P12732 外人 题解
Mss1617_AFO · · 题解
题目大意
一共有
解题思路
题意晦涩难懂,不妨画个图先来理解。
下面以样例为例画个图:
3 // 3 节课
1 2 3 // y[i]
3 1 2 // s[i]
这大概就阐述清了“如果他们同时间处于同一高度,也就是说如果上述两条线段有交点,那么两人就会互相见到”的含义。
那还有一个“他们可以在两层之间的楼梯上见到,也可以在出发时或到达时见到”,啥意思?
《生动形象》。
这就很好考虑了,判断每个线段是否有交点即可。
核心内容
判断交点,可以通过比较线段端点的方法来判断。
由第一幅图可知:如果
由第二幅图可知:第一个课间时,如果
整理,得:
由于咱们不知道
最后
代码实现
#include<bits/stdc++.h>
using namespace std;
int n;
int s[10005],y[10005];
int ans;
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>s[i];
for(int i=1;i<=n;i++) cin>>y[i];
for(int i=1;i<=n-1;i++)
{
//核心部分
if(s[i]>y[i]&&y[i+1]>=s[i+1]||y[i]>s[i]&&s[i+1]>=y[i+1]||s[i]==y[i]) ans++;
}
cout<<ans;
return 0;
}
感谢观看。