为了解决谁是跑的最快的奶牛的长期争论,贝茜和艾希决定在农场中来一场赛跑。
两头奶牛在同一时间从同一地点出发,朝同一方向奔跑。
每个奶牛的奔跑过程都可以划分为若干段。
在每一段行程中,奶牛的奔跑速度相同。
例如,贝茜可能首先以 5 的速度奔跑 3 单位时间,然后以 10 的速度奔跑 6 单位时间。
贝茜和艾希的总跑步时间相同。
两头奶牛希望你帮助计算在她们的赛跑中,领头者的变化次数。
当上一次的领头者是 B 的情况下,如果 A 超过了 B,成为了领头者,那么领头者的变化就发生了。
例如,如果 B 是领头者,然后 A 超过了 B,这就算是一次领头者的变化。
如果 B 是领头者,然后 A 追上了 B 并与他齐头并进一段时间,最终 A 超过了 B,这也算是一次领头者的变化。
输入格式
第一行包含两个整数 N 和 M,表示贝茜的奔跑过程可分为 N 段,艾希的奔跑过程可分为 M 段。
接下来 N 行,每行描述一段贝茜的奔跑过程,包含两个整数,分别表示贝茜的奔跑速度以及她以这个速度奔跑的时间(两个整数都在 1…1000 范围内)。
接下来 M 行,每行描述一段艾希的奔跑过程,包含两个整数,分别表示艾希的奔跑速度以及她以这个速度奔跑的时间(两个整数都在 1…1000 范围内)。
输出格式
输出赛跑中领头者的变化次数。
数据范围
1≤N,M≤1000
输入样例:
1 |
4 3 1 2 4 1 1 1 2 10 2 3 1 2 3 9 |
输出样例:
样例解释
t<3 时,艾希保持领先位置。
t=3 时,贝茜追上艾希,并以相同速度奔跑一个单位时间。
随后贝茜提速,超过艾希(第一次领头者变化)。
短暂时间后,艾希提速,超过贝茜(第二次领头者变化)并保持领先至结束。
题目分析
N和M的大小都是1000
对于每一组数据v和t的大小也都是<=1000
因此我们可以暴力计算出贝茜和贝茜分别在每一个单位时间上的位置,通过比较两个人位置的变化情况,来判断领头者是否发生了改变
时间复杂度为O(106)
1 |
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><iostream></span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><algorithm></span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><cstring></span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><cmath></span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><vector></span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><stack></span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><queue></span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><sstream></span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">x</span> <span class="token expression">first</span></span> <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">y</span> <span class="token expression">second</span></span> <span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span> <span class="token keyword">typedef</span> <span class="token keyword">long</span> <span class="token keyword">long</span> ll<span class="token punctuation">;</span> <span class="token keyword">typedef</span> pair<span class="token operator"><</span><span class="token keyword">int</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token operator">></span> PII<span class="token punctuation">;</span> <span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">1000010</span><span class="token punctuation">;</span> <span class="token keyword">const</span> <span class="token keyword">int</span> MOD <span class="token operator">=</span> <span class="token number">1000000007</span><span class="token punctuation">;</span> <span class="token keyword">const</span> <span class="token keyword">int</span> INF <span class="token operator">=</span> <span class="token number">0x3f3f3f3f</span><span class="token punctuation">;</span> <span class="token keyword">int</span> <span class="token function">gcd</span><span class="token punctuation">(</span><span class="token keyword">int</span> a<span class="token punctuation">,</span> <span class="token keyword">int</span> b<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span><span class="token keyword">return</span> b <span class="token operator">?</span> <span class="token function">gcd</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span> a <span class="token operator">%</span> b<span class="token punctuation">)</span> <span class="token operator">:</span> a<span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token keyword">int</span> idx<span class="token punctuation">;</span> <span class="token keyword">int</span> a<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">,</span> b<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token keyword">int</span> n<span class="token punctuation">,</span> m<span class="token punctuation">;</span> cin <span class="token operator">>></span> n <span class="token operator">>></span> m<span class="token punctuation">;</span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> n<span class="token punctuation">;</span> i <span class="token operator">++</span> <span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token keyword">int</span> v<span class="token punctuation">,</span> t<span class="token punctuation">;</span> cin <span class="token operator">>></span> v <span class="token operator">>></span> t<span class="token punctuation">;</span> <span class="token keyword">while</span><span class="token punctuation">(</span>t <span class="token operator">--</span> <span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> a<span class="token punctuation">[</span>idx <span class="token operator">++</span> <span class="token punctuation">]</span> <span class="token operator">=</span> v<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> idx <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> m<span class="token punctuation">;</span> i <span class="token operator">++</span> <span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token keyword">int</span> v<span class="token punctuation">,</span> t<span class="token punctuation">;</span> cin <span class="token operator">>></span> v <span class="token operator">>></span> t<span class="token punctuation">;</span> <span class="token keyword">while</span><span class="token punctuation">(</span>t <span class="token operator">--</span> <span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> b<span class="token punctuation">[</span>idx <span class="token operator">++</span> <span class="token punctuation">]</span> <span class="token operator">=</span> v<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">int</span> res <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token keyword">int</span> flag <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token keyword">int</span> la <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> lb <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> idx<span class="token punctuation">;</span> i <span class="token operator">++</span> <span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> la <span class="token operator">+=</span> a<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> lb <span class="token operator">+=</span> b<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span>la <span class="token operator">></span> lb<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token keyword">if</span><span class="token punctuation">(</span>flag <span class="token operator">==</span> <span class="token number">2</span><span class="token punctuation">)</span> res <span class="token operator">++</span> <span class="token punctuation">;</span> flag <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span><span class="token punctuation">(</span>la <span class="token operator"><</span> lb<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token keyword">if</span><span class="token punctuation">(</span>flag <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">)</span> res <span class="token operator">++</span> <span class="token punctuation">;</span> flag <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> cout <span class="token operator"><<</span> res <span class="token operator"><<</span> endl<span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |