再び運転することを学ぶためにP5269ヨーロッパの安定したヨーロッパ
トピックの背景
ヨーロッパ図で安定性のヨーロッパを運転することを学ぶためにあなた自身の脳を作ります
タイトル説明
定期的な運動オーク車でユーロ安定したヨーロッパの学校の車。オークの車この車の合計\(N \)ギアを、毎秒ヨーロッパで欧州安定がギアを増減することができます\(1 \) 、初期時間(\(0 \) $ 1 $のための時間)のギア。
車速範囲である([L、R&LT] \)\、初期回転速度は$ L $です。アップシフトは、速度になるたびに\(L \) 、ダウンシフトは、となるであろう\(R&LT \) 。欧州欧州の安定性は、速度が増加するように、第2スロットルであってもよい(X- \)\次いで、及び\(R&LT \)取る\(\分間{テキスト} \) 。速度が連続する場合\(K \) Sであり、\(= R&LT \) 、その後、車のエンジンが動作を停止し、ここで\(K \)第二端ストップモーメント(さえ\(K \)秒それは)まだこの場合考えられ、ダウンシフト操作を経験しました。
当社は、ガス事業への最初のステップよりもでシフト操作、これらの動作は第二モーメントの初めに行われていることを信じています。この第2の速度で車の前方のからの距離は、\(\回\)ギア。
今、欧州の安定性は、ヨーロッパの演習の一連の動作を考えると、あなたは彼がはい総進歩したどのくらいの距離見つける必要があります。
入力形式
整数第6行(T、N、Lは、R、X、K \)\ \、(T \)は合計時間を表します。
次\(T \)二つの整数の行\(X、Y \) 、第二の表現の動作を制御します。
前記\(X = 0 \) 、アップシフトを示す(X = 1 \。)\ダウンシフトを表し、\(X = 2 \)ギアチェンジを表し; \(Y = 0 \)は、何のスロットルを意味しない(\ Y = 1 \)はスロットルを表します。(理由なしブレーキ聞かないでください)
出力フォーマット
ライン整数、所定の距離を表し、動作シーケンスを進めます。
ギアは、ヨーロッパ、欧州安定である場合には、\(N \)シフトアップまたはギアが入っているとき、(1 \)\シフトダウン、その後、所定の配列が有効でない、出力( - 1 \)\。
サンプル入力と出力
入力#1
5 3 1 10 5 100
0 1
0 0
2 1
2 1
1 1
出力#1
83
入力#2
3 1 1 1 1 2
2 0
2 1
2 0
出力#2
2
入力#3
1 2 3 4 5 6
1 0
出力#3
-1
説明/ヒント
サンプルについて:
第一ギヤは、第二のある\(2 \) 、速度(6 \)\ ;
第2の歯車が第二である\(3 \) 、速度は(1 \)\ ;
第二に第3歯車\(3 \ )、速度(6 \)\ ;
第二に4速\(3 \)の回転速度(\ 10 \) ;
第二に5速\(2 \)の回転速度(10 \)\。
エンジンは動作を停止した後のサンプルについて第二には、2秒を進めます。
ため\(30 \%\)データ、シフト動作せず(すなわち、確実にする\(X = 2 \) )。
追加のための\(30 \%\)のデータではなく、アクセルの踏み込み操作(すなわち、保証するために\(Y = 0 \) )。
すべてのデータのために確保する\(1 \ルT、N、Lは、R、X、K \ル^ 10 6、L \ R&ル\ LT) 。
[思考]
シミュレーション
[話す]の前に
実際には、非常に単純な、私は複雑だと思う
ので、長いトピックを読んで、鍋を心配する書き込み
主な理由は、この質問はGYH兄が私には推奨されているので、
兄が、もちろん、単純にそれをお勧めすることはできません
が、私は、このような思慮深いGYHを期待していませんでしたこんにゃく
私は私にはこのレベルの主題で行うことを探して
幸せqwqを
(それが、なぜ長い長いだけで10点を開けませんしません)
[解析]タイトル
3つのシフト動作について、2つの速度の操作がある
アップシフト、ダウンシフト、及び固定された加速度は、加速度がない
ようなシミュレートするために与えられたデータ
[コア]アイデア
以下のようなシミュレートするために提案
最初はアップシフト、ダウンシフトまたは固定を決定
シフトが増加速度がLになるせてアップシフトである場合に
ダウンシフトギア減速速度をrとなる許可すれば
なら固定の制御を持っていないこと
加速かは、決定された加速度であり
、それはXおよび現在の速度と一緒になって、Rの分後に加速
しないチューブを促進せずに行います
そこが分解され、これは問題でなかったであろう
だけで店を開く必要があるが、どのくらいのR上記可変レートで起こってきた
ことは、可変速度rであれば、この時点++
またはあなたが0になります
[完了コード】
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
int read()
{
int sum = 0,fg = 1;
char c = getchar();
while(c < '0' || c > '9')
{
if(c == '-')fg = -1;
c = getchar();
}
while(c >= '0' && c <= '9')
{
sum = sum * 10 + c - '0';
c = getchar();
}
return sum * fg;
}
signed main()
{
int ans = 0;
int t = read(),n = read(),l = read(),r = read(),x = read(),k = read();
int dang = 1,zhuan = l;
int last = 0;
for(register int i = 1;i <= t;++ i)
{
int opt = read(),y = read();
if(opt == 0)//升档
{
if(dang == n)
{
cout << -1 << endl;
return 0;
}
dang ++;
zhuan = l;//先升档
//如果不踩油门,那就只处理升档,如果踩油门那就加速
if(y == 1)
zhuan = min(r,zhuan + x);
}
else
if(opt == 1)//降档
{
if(dang == 1)
{
cout << -1 << endl;
return 0;
}
dang --;
zhuan = r;
if(y == 1)
zhuan = min(r,zhuan + x);
}
else//档位不变
{
if(y == 1)
zhuan = min(r,zhuan + x);
}
ans += zhuan * dang;
if(zhuan == r)
last ++;
else
last = 0;
if(last == k)
break;
}
cout << ans << endl;
return 0;
}
/*
6 3 1 10 5 100
0 1
0 0
2 1
2 1
1 1
1 0
*/