CF1132D Streessful Training(二分+贪心+优先队列*2300)

简介: CF1132D Streessful Training(二分+贪心+优先队列*2300)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
typedef long long ll;
using namespace std;
const int N = 3e5 + 10;
ll n, k;
ll a[N], b[N];
struct node {
  ll a;
  ll b;
  ll c;
  bool operator<(const node &w)const {
    return c > w.c;  //从堆底到根 从大到小 即 小根堆
  }
};
bool check(ll x) {
  priority_queue<node>q;
  for (int i = 1; i <= n; i++) {
    if (a[i] / b[i] < k)
      q.push({a[i], b[i], a[i] / b[i]});
  }
  if (q.empty()) return true;
  for (int i = 0; i < k; i++) {
    auto t = q.top();
    q.pop();
    if (t.c < i) return false;
    if ((t.a + x) / t.b  < k) {
      q.push({t.a + x, t.b, (t.a + x) / t.b });
    }
    if (q.empty()) return true;
  }
  return true;
}
int main() {
  scanf("%lld%lld", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
  for (int i = 1; i <= n; i++) scanf("%lld", &b[i]);
  //枚举最小答案
  ll l = 0, r = 3e12 + 10;
  bool f = 0;
  while (l < r) {
    ll mid = l + r >> 1;
    if (check(mid)) {
      r = mid;
      f = 1;
    } else l = mid + 1;
  }
  if (f == 1)
    cout << l << "\n";
  else cout << -1 << "\n";
  return  0;
}
目录
相关文章
|
11天前
|
人工智能 算法 Java
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。
|
8月前
|
存储 容器
华为机试HJ41:称砝码(深度优先遍历dfs-Depth First Search)
华为机试HJ41:称砝码(深度优先遍历dfs-Depth First Search)
|
10月前
|
人工智能
POJ 2299 Ultra-QuickSort(树状数组+离散化+求逆序数)
POJ 2299 Ultra-QuickSort(树状数组+离散化+求逆序数)
51nod 1255 字典序最小的子序列 (贪心 + stack)
51nod 1255 字典序最小的子序列 (贪心 + stack)
65 0
|
机器学习/深度学习 Windows
51nod 1258序列求和
51nod 1258序列求和
55 0
|
机器学习/深度学习 Windows
The 2022 ICPC Asia Regionals Online Contest (I)-D题题解(DFS暴搜+剪枝+打表去重+二分)
时间复杂度:O(227 + nlog(n) + T * log(n)),227是DFS打表的时间,nlog(n)是vertor排序的时间,T*log(n)是询问次数和二分搜答案的时间。(如果算错了,评论或者私信指出谢谢)
131 0
The 2022 ICPC Asia Regionals Online Contest (I)-D题题解(DFS暴搜+剪枝+打表去重+二分)
CF1310A. Recommendations(贪心 优先队列 并查集)
CF1310A. Recommendations(贪心 优先队列 并查集)
79 0
|
人工智能
CF1315 C.Restoring Permutation(构造 二分 贪心)
CF1315 C.Restoring Permutation(构造 二分 贪心)
56 0
|
机器学习/深度学习 人工智能 算法
CF1446D Frequency Problem(思维 前缀和 根号分治 双指针)
CF1446D Frequency Problem(思维 前缀和 根号分治 双指针)
71 0
UPC Graph (最小生成树 || 并查集+二分)
UPC Graph (最小生成树 || 并查集+二分)
77 0