1 条题解
-
0
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 2e5 + 5, M = 1e9 + 5; int T, n, h[N], a[N], t[N], p[N]; double q1 = -1, q2 = N; int work() { cin>>n; for(int i = 1; i <= n; i++) cin>>h[i]; for(int i = 1; i <= n; i++) cin>>a[i]; for(int i = 1; i <= n; i++) { cin>>t[i]; p[t[i] + 1] = i; } if(n == 1) return 0; q1 = -1, q2 = M; for(int i = 1; i < n; i++) { int x = p[i], y = p[i + 1]; if(a[x] > a[y]) q1 = max(q1, 1.0 * (h[y] - h[x]) / (a[x] - a[y])); else if(a[x] < a[y]) q2 = min(q2, 1.0 * (h[y] - h[x]) / (a[x] - a[y])); else if(h[x] <= h[y]) return -1; } if(q1 < q2) { double r = floor(q1) + 1; if(r < q2) return r; else return -1; } else return -1; } signed main() { cin>>T; while(T--) cout<<work()<<endl; return 0; }
- 1
信息
- ID
- 103
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 21
- 已通过
- 4
- 上传者