日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【u238】暴力摩托

發布時間:2023/12/13 综合教程 48 生活家
生活随笔 收集整理的這篇文章主要介紹了 【u238】暴力摩托 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Time Limit: 1 second
Memory Limit: 64 MB

【問題描述】
晚會上大家在玩一款“暴力摩托”的游戲,它擁有非常逼真的畫面和音響效果! 當然了,車子總是要加油的咯,已知賽道長S公里(S≤10000整數,且為10的倍數),賽車的油耗Q=1,即1公里路耗1個單位的油。Q不變,賽車的油箱為無窮大,同時在沿途的任何地方都可以加油。 約定,每次加油的數量為整數,且為10的倍數,賽車的速度與賽車加油后的總油量有關。其關系如下表列出:
加油量 車速(公里/小時)
≤10 100
(10,20 ] 90
(20,30 ] 80
(30,40 ] 75
(40,+∞) 70
同時,汽車每加油一次需要耗費T分鐘(T<=100不論加油多少,開始時的加油不計時間)。
當S,T給出之后,選擇一個最優的加油方案。使汽車以最少時間跑完全程。
例如:當S=40,T=6(分鐘),加油的方案有許多種,列出一些:
1)起點加油40,用時40/75≈0.53小時
2)起點加油20,中途加20,用時20/90+20/90+6/60(化為小時)≈ 0.54 小時

【輸入格式】

一行,為兩個整數S、T。

【輸出格式】
輸出一行,為最少用時(保留二位小數)

【數據規模】

Sample Input1
40 6

Sample Output1
0.53

【題目鏈接】:http://noi.qz5z.com/viewtask.asp?id=u238

【題解】

這里先思考;
有沒有可能在中間加一次油之后,
油還沒耗盡繼續加油?
加油?
要加到什么地步?
①如果和當前速度一樣;
那么就等耗盡了再加就好.
②如果和當前速度相比更慢了
當前這段你先用高速開完再說啊
③如果和當前速度相比更快了
不行,不可能,因為速度是按照一次加油后的總油量來決定的
你不可能從20->6之后,加油變成100km/h
題意不允許;
綜上,也就是說每一個位置決策完之后等到油耗盡之后再決策;
記憶化搜索;
設f[x]表示到第x位置花的最少時間;
寫個dfs就好;
但是優先往遠處走,這樣f的約束性更強;

【完整代碼】

#include <cstdio>
#include <algorithm>
#include <cmath>
#define rei(x) scanf("%d",&x)
#define rep1(i,x,y) for (int i = x;i <= y;i++)
#define rep2(i,x,y) for (int i = x;i >= y;i--)
using namespace std;

const int N = 1000+100;
const double tx[5] = {0,100.0,90.0,80.0,75.0};

int s,T;
double f[N];

void pre()
{
    rep1(i,0,1000)
        f[i] = 21e8;
}

void in()
{
    rei(s),rei(T);
    s/=10;
}

void dfs(int x,double t)
{
    if (t>=f[x]) return;
    f[x] = t;
    if (x==s)
        return;
    double key = double(T);
    if (x==0) key = 0;
    rep2(j,4,1)
    {
        int r = x+j;
        if (r>s) r = s;
        dfs(r,t+double(r-x)*10/tx[j]+key/60.0);
    }
    dfs(s,t+key/60.0+double(s-x)*10/70.0);
}

void o()
{
    printf("%.2f
",f[s]);
}

int main()
{
    pre();//checked
    in();//checked
    dfs(0,0);//checked
    o();//checked
    return 0;
}

總結

以上是生活随笔為你收集整理的【u238】暴力摩托的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。