1743E - FTL - CodeForces Solution


binary search dp *2400

Please click on ads to support us..

C++ Code:

#include "bits/stdc++.h"
using namespace std;
#define ll  long long
#define ld  long double  
#define IOS ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
#define mem(arr,val) memset(arr,val,sizeof(arr))
const int dirx[] = { 0,0,-1,1,1,-1,1,-1 };
const int diry[] = { 1,-1,0,0,1,1,-1,-1 };
const int N = 5e4 + 5;
const ll inf = 1e18;
const int mod = 1e9 + 7;
bool getbit(ll num, int idx) { return ((num >> idx) & 1); }
void set1(int& num, int idx) { num |= (1 << idx); }
void set0(int& num, int idx) { num &= (~(1 << idx)); }
ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); }
ll lcm(int a, int b) { return a / gcd(a, b) * b; }
ll p1, p2, t1, t2, h, s;
ll dp[N];
ll rec(ll i) {
	if (i <= 0)return 0;
	ll& ret = dp[i];
	if (~ret)return ret;
	ret = inf;
	for (ll g = 0; g <= i; g++) {
		
		ll time1 = g * t1;
		ll second = time1 / t2;

		ll use1 = g * (p1 - s);// use first g times
		ll use2 = second * (p2 - s); // how many times will use second

		ret = min(ret, rec(i - use1 - use2) + time1);
		ll dmg = use1 + use2 + p1 + p2 - s; // intersect in last one 
		ll cost = max(time1 + t1, second * t2 + t2);
		ret = min(ret, rec(i - dmg) + cost);

		time1 = g * t2;
		second = time1 / t1;

		use1 = g * (p2 - s);
		use2 = second * (p1 - s);

		ret = min(ret, rec(i - use1 - use2) + time1);
		dmg = use1 + use2 + p1 + p2 - s;
		cost = max(time1 + t2, second * t1 + t1);
		ret = min(ret, rec(i - dmg) + cost);

	}
	return ret;
}
int main() {
	IOS;
	cin >> p1 >> t1 >> p2 >> t2 >> h >> s;
	mem(dp, -1);
	cout << rec(h) << "\n";
	
}


Comments

Submit
0 Comments
More Questions

1515E - Phoenix and Computers
1552B - Running for Gold
994A - Fingerprints
1221C - Perfect Team
1709C - Recover an RBS
378A - Playing with Dice
248B - Chilly Willy
1709B - Also Try Minecraft
1418A - Buying Torches
131C - The World is a Theatre
1696A - NIT orz
1178D - Prime Graph
1711D - Rain
534A - Exam
1472A - Cards for Friends
315A - Sereja and Bottles
1697C - awoo's Favorite Problem
165A - Supercentral Point
1493A - Anti-knapsack
1493B - Planet Lapituletti
747B - Mammoth's Genome Decoding
1591C - Minimize Distance
1182B - Plus from Picture
1674B - Dictionary
1426C - Increase and Copy
520C - DNA Alignment
767A - Snacktower
1365A - Matrix Game
714B - Filya and Homework
31A - Worms Evolution