wa了好久
/* * this code is made by LinMeiChen * Problem: * Type of Problem: * Thinking: * Feeling: */ #include<iostream> #include<algorithm> #include<stdlib.h> #include<string.h> #include<stdio.h> #include<math.h> #include<string> #include<vector> #include<queue> #include<list> using namespace std; typedef long long lld; typedef unsigned int ud; #define oo 0x3f3f3f3f #define maxn 44 struct Buckets { double a, b; }but[maxn]; bool cmp(Buckets b1, Buckets b2) { return b1.b*b2.a < b2.b*b1.a; } int main() { int T, n; double v, time; bool flag; scanf("%d", &T); while (T--) { flag = false; scanf("%d%lf", &n, &v); for (int i = 1; i <= n; i++) scanf("%lf", &but[i].a); for (int i = 1; i <= n; i++) scanf("%lf", &but[i].b); for (int i = 1; i <= n; i++) if (but[i].a >= v && but[i].b != 0.0) { flag = true; break; } if (flag) { printf("-1\n"); continue; } sort(but + 1, but + 1 + n, cmp); time = 0.0; for (int i = 1; i <= n; i++) if (but[i].b != 0) time += (but[i].b + but[i].a*time) / (v - but[i].a); printf("%0.f\n", time); } return 0; }