德阳高端网站建设,有织梦后台系统怎么做网站,wordpress5.6,网站备案黑名单大家好#xff0c;我是晴天学长#xff0c;一道与平时的题型截然不同的题型#xff0c;需要的小伙伴可以关注支持一下哦#xff01;后续会继续更新的。#x1f4aa;#x1f4aa;#x1f4aa; 1) .小郑躲太阳 问题描述 小郑一觉醒来发现起晚啦!现在需要从家里飞速前往公司…大家好我是晴天学长一道与平时的题型截然不同的题型需要的小伙伴可以关注支持一下哦后续会继续更新的。 1) .小郑躲太阳 问题描述 小郑一觉醒来发现起晚啦!现在需要从家里飞速前往公司对他来说路线是唯一的。 可以把小郑的上班路径看作是一条直线 其中有一些位置能被太阳直射而有一些被遮住了。 小郑步行每秒的移动速度是1海秒步行不花费体力。 路径长度为s有n个不相交的整数区间l到r示这部分[I,r之间被遮蔽了。 小郑-开始有c的体力他可以耗费每秒1点体力慢跑一会儿 这样他就可以在这段时间内获得2米海秒的移动速度。 小郑也可以耗费每秒3点体力)冲刺一会儿 这样他就可以在这段时间内获得3米海秒的移动速度。 注意:时间是连续的例如小郑可以花费2点体力冲刺2/3秒。 小郑可以在任意时间决定他的移动方式但他希望被晒到太阳的时间最短。 输入格式 第一行输入三个整数s,n,c,代表路径的总长度被遮蔽区间的个数和小郑的初始体力。 接下来n行每行两个整数l,r表示[I,r]这段区间被遮蔽了。 输出格式 输出小郑最少要被太阳晒到的时间(四舍五入保留6位小数)。 样例输入1 1006 10 样例输出1 90.90000 样例输入2 100 2 20 10 26 60 168 2) .算法思路
小郑躲太阳
遮蔽区可以删去 1.有全程慢跑的体力不够只能不够了 2.慢跑用不完能量的时候可以冲刺一波 3.算法步骤 1.读取输入的行并解析为长整型变量s、n和c分别表示总距离、阴影区域的数量和冲刺能力。
2.初始化变量res为0用于记录阴影区域的总长度。
3.使用循环读取每个阴影区域的起始位置和结束位置并将其长度累加到res中。
4.将总距离s减去阴影区域的总长度得到剩余未被阴影覆盖的距离s。
5.检查特殊情况如果冲刺能力的两倍恰好等于剩余距离s说明可以全程慢跑输出结果为剩余距离s除以2.0。
6.检查特殊情况如果冲刺能力大于等于剩余距离s说明可以全程步行输出结果为剩余距离s除以3.0。
7.如果冲刺能力的两倍大于剩余距离s表示有多余的体力。
8.计算第一次冲刺的时间t1即冲刺能力的两倍减去剩余距离s。
9.计算第一次冲刺的距离s1即第一次冲刺的时间t1除以3.0乘以3每分钟跑3米。
10.计算第二次冲刺的时间t2即剩余距离s减去第一次冲刺的距离s1除以2.0。
11.计算总时间t即第一次冲刺的时间t1加上第二次冲刺的时间t2。
12.输出结果为总时间t保留小数点后六位。
13.刷新输出流。 4. 代码实例
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;public class Main {static BufferedReader in new BufferedReader(new InputStreamReader(System.in));static PrintWriter out new PrintWriter(new PrintWriter(System.out));static String[] lines;public static void main(String[] args) throws IOException {lines in.readLine().split( );long s Long.parseLong(lines[0]);long n Long.parseLong(lines[1]);long c Long.parseLong(lines[2]);//阴影区域long res 0;for (int i 0; i n; i) {lines in.readLine().split( );long l Long.parseLong(lines[0]);long r Long.parseLong(lines[1]);res r-l;}s-res;//看是否能全程慢跑(有刚好的情况)if (c*2s){out.println(String.format(%.6f,s/2.0));}else if(cs){out.println(String.format(%.6f,s/3.0));}//有多余的体力else if (c*2s){//冲刺double t1 (c*2-s);double s1 (t1/3)*3;double t2 (s-s1)/2.0;double t t1t2;out.println(String.format(%.6f,t));}//不能全程跑else {double t1 c*2;double t2 s-t1;double t ct2;out.println(String.format(%.6f,t));}out.flush();}
} 4.总结
思维推导题情况分类。 试题链接