1. Title Description: Click to open the link
2. Problem-Solving ideas: The problem is solved by solving inequalities and finding the minimum value. According to test instructions, we need to figure out the lowest floor that all elevators can reach in n steps, and then find out their minimum value is the answer. Set this n step, there is x step upward, then n-x step downward, assuming upward can walk the U layer, down can walk v layer, then the following equation is not difficult to list:
u*x-v* (n-x) ≥1
The lowest floor can be calculated after the X is solved. After sorting the output minimum value can solve the problem.
3. Code:
#define _crt_secure_no_warnings #include <iostream> #include <algorithm> #include <string> #include <sstream> #include <set> #include <vector> #include <stack> #include <map> #include < queue> #include <deque> #include <cstdlib> #include <cstdio> #include <cstring> #include < cmath> #include <ctime> #include <functional>using namespace std; #define N 2000+10int mind[n];int Len, N, M void update (int u,int v,int p)//solution inequality calculates the lowest floor {int x = Ceil ((double) (n*v + 1)/(U + V)); Mind[p] = u*x-v* (n-x);} int main () {//freopen ("T.txt", "R", stdin), while (~SCANF ("%d%d", &n, &m)) {memset (mind, 0, sizeof); for (int i = 0; I < m; i++) {int u, v;cin >> u >> v;update (U, V, i);} Sort (mind, mind + M); cout << mind[0] << Endl;} return 0;}
Exercise 10-20 Business Center UVa1648