凡科网站建设好,生成图片的网站,建设网站需要哪些硬件,搭建安装wordpress教程 pdf题目描述一年一度的七夕又要到了#xff0c;可歌可泣的牛郎织女又可以在鹊桥相会了。不知道大家有没有雅兴陪 Redraiment 坐在葡萄藤下倾听他们的对话。 我们知道#xff0c;牛郎要与织女相见#xff0c;必须要有喜鹊搭桥。所以#xff0c;牛郎必须在天河岸上等待#xff…题目描述一年一度的七夕又要到了可歌可泣的牛郎织女又可以在鹊桥相会了。不知道大家有没有雅兴陪 Redraiment 坐在葡萄藤下倾听他们的对话。 我们知道牛郎要与织女相见必须要有喜鹊搭桥。所以牛郎必须在天河岸上等待直到有喜鹊经过于是牛郎可以搭乘这只喜鹊往河对岸走。当然牛郎急着去见织女所以在途中如果有速度更快的喜鹊赶上了他他就会换乘那只速度更快的喜鹊。 我们可以假定喜鹊的速度是恒定不变的并且喜鹊一直是沿直线飞行的不转弯更不回头牛郎坐上喜鹊所花的时间忽略不计。 现给出天河的宽度、每只喜鹊的初始位置我们设牛郎所在位置为 0天河方向为正方向以及它们的速度有可能是负数代表喜鹊往反方向飞行这些数据都是整数。请你来帮忙计算一下牛郎到达对岸与织女相会最少需要多少时间让他们早些有情人终成眷属。^_^ 当然如果没有喜鹊来搭载牛郎我们可怜的牛郎就到不了对岸与织女相会了那我们只好很遗憾的跟牛郎说Cant Solve我们祈祷不要发生这样的事情。输入第一行有两个数据 w,n分别代表天河的宽度单位km和喜鹊的只数1≤w≤1000,1≤n≤10000。接下来从第二行到第 n1 行每行都有两个数据 t,v分别代表 1 只喜鹊的初始位置单位mmm和它的飞行速度单位m/s−1000≤t≤1000,−100≤v≤100。 所有的数据范围都不会超过 32 位整数的表示范围用int型数据不会溢出。输入以 0 0结束。输出如果牛郎能到达对岸输出他到达对岸所花的总时间结果精确到秒即可小数部分舍去否则输出Cant Solve。输入 1 1 0 1 0 0 输出 1000#include stdio.h int main() { int w, n; while (scanf(%d %d, w, n) 2) { if (w 0 n 0) break; long long width_m w * 1000LL; long long min_time -1; // 用-1表示还没找到有效的喜鹊 for (int i 0; i n; i) { long long t, v; scanf(%lld %lld, t, v); // 只有 t 0 且 v 0 的喜鹊才有可能被牛郎坐上并带到对岸 if (t 0 v 0) { // 到达对岸的时间 (width_m - t) / v long long time (width_m - t) / v; if (min_time -1 || time min_time) { min_time time; } } } if (min_time -1) { printf(Cant Solve\n); } else { printf(%lld\n, min_time); } } return 0;if (min_time -1 || time min_time) {min_time time;}//上述if条件这样写是因为输入第一行时timemin_time是不可能的所以输入的第一行是以min_time-1来判断的所以一定会执行min_timetime;下一次再输入第二行时如果时间比第一次输入的时间更少则就以这个时间为主。主要是第一行输入的数据计算出来的时间一定要被记录下来这样才能和第二行输入的数据得出的时间比较找出最短时间到达对岸。这也是为什么要写上述条件来判断的原因。第一个条件只在第一行输入中用第二个条件除了第一行输入以外其他行的判断条件。但二者的最后运行结果是一样的所以可以写到一个if条件里边。由上述代码可以看出看似没有考虑中途换乘的问题实际上已经考虑换乘问题了只是不需要模拟更简单。因为牛郎一开始在0位置假设他要乘坐一只初始位置为0的喜鹊这样可以不用考虑离他位置远的喜鹊飞过来他需要等的时间那乘坐位置为0但速度慢的喜鹊一定会被一开始离他远但速度快的喜鹊追上这时候就要换乘此时离得近但慢的喜鹊和离得远但快的喜鹊运动的时间是一样的换乘之后速度就是离得远但快的喜鹊走到对岸需要的时间所以这样看来直接等价成离得远但速度最快的喜鹊从原位置到对岸所有的时间即可即是最短耗时。所以无论是在原位置还是离得远的位置只要速度是最快的就是我们要找的答案。总路程是原位置到对岸的总路程速度是最快速度可以直接计算出总时间然后进行比较即可。我的思路历程特别麻烦因为我当时没有考虑到实际上不用模拟中途被其他喜鹊替换的那个过程。我又在代码中模拟了。同时我忘记还有n这个变量了用的while其实不好用。这样就不需要定义count了也就没有后面的ifcount1这个条件判断了。下面的代码还有逻辑错误总之题目思考不对。按下述代码思路根本无法往下进行。就这样吧还要继续加油啊下面的代码不对哈#includestdio.h #includemath.h int main() { int w,n; scanf(%d%d,w,n); int t,v; int count0; int max_v; int ts0; int aw*1000; int s0; int m0; int tm0; while(scanf(%d%d,t,v)!EOF){ count; if(t0){ max_vv; if(vmax_v){//此行代码永远不会成立因为在上面刚赋值max_vv;所以这里肯定不对。 max_vv; tsa/max_v; } } if(t0vmax_v){ t-t; tst/(v-max_v); sts*max_v; ma-s; } max_vv; tmtsm/max_v; } if(count1t0v0){ tma/v; }else if(count1t0v0||count1t0v0||count0){ printf(Cantt Solve); }else{ printf(%d,tm); } return 0; }