1 条题解
- 
  1
#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
 - 上传者