c++
发布日期:2021-11-04 22:04:19 浏览次数:5 分类:技术文章

本文共 1271 字,大约阅读时间需要 4 分钟。

                                                      

        赛车比赛在潘多拉星球变得越来越流行了。但是他们的比赛跟我们平常的不太一样:n 辆赛车在一条长长的直道上展开同台竞技。每辆赛车的速度都为 1m/s,整条赛道在每一米都有坐标标记。

在比赛的赛车中,赛车 i 从 0 秒开始由 ai 向 bi 移动。到达 bi 之后转而返回由 bi 向 ai 移动。循环往复。

又是蒜头菌!原来这是蒜头菌正在玩的一个手机小游戏。蒜头菌可以在某些位置放下 TNT 炸毁某些赛车。因为他有 m 个问题。其中,问题 j 是:在 tj 时刻,在 xi 到 yi 之间共有几辆赛车?

你的任务就是回答萌蒜头的问题。

输入

输入的第一行包含两个数字 n 和 m(1 ≤ n, m ≤ 1000),分别代表正在比赛的赛车数量和蒜头的问题数。

接下来的 n 行中,每行包含 2 个整数 ai、bi(0 ≤ ai, bi ≤ 109, ai != bi),分别代表赛车 i 的起点和终点。

再接下来的 m 行中,每行包含 3 个整数 xj,yj,tj(0 ≤ xj ≤ yj ≤ 109, 0 ≤ tj ≤ 109),分别代表问题 j 的左右坐标边界和询问的时间。

输出

输出共有 m 行,每行各有一个整数,分别代表对应的 m 个问题的答案。

样例1

输入:

0 10 22 33 54 50 5 00 1 20 2 12 5 22 5 3

输出:

51243
 
#include 
using namespace std;const int N = 1001;  struct  racing {      int start,end,t,flag;  }node[N]; struct compare{ int left,right,time;}; int main(int argc, char** argv) { int n,m,ans; compare com; cin>>n>>m;      while(n>0&&m>0){          for(int i=0; i
>node[i].start<
>com.left>>com.right>>com.time;            ans=0;              for(int i=0; i
=com.left&&loc<=com.right)                      ans++;              }              cout<
<
分析题目:
  我们从题目中分析出对象即:赛车和问题集。接下来对每个赛车确定位置是最关键的一步,通过分析可以知道:询问的时间时赛车完成了往返的一个来回的整数倍时有local=node.start+res;否则就为local=node[i].end-res;从而判断是否在询问区间内。

转载地址:https://blog.csdn.net/xiaochen87654321/article/details/50791133 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:淘汰赛车
下一篇:Hadoop集群部署配置文档(第2部分)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月21日 20时51分10秒