```#include <iostream>
#include <algorithm>
#include <math.h>
#include <cstdio>
#include <set>
#include <map>
#include <string>
#include <vector>
#include <string.h>
#include <queue>
#define PER(i,a,n) for(int i=n;i>=a;--i)
#define REP(i,a,n) for(int i=a;i<=n;++i)
#define hr putchar('\n')
#define pb push_back
#define mp make_pair
#define mid (l+r>>1)
#define lc (o<<1)
#define rc (lc|1)

using namespace std;
typedef long long ll;
const int P = 1e9+7;
ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
ll qpow(ll a,ll n) {
ll r=1%P;
for (a%=P;n;a=a*a%P,n>>=1)if(n&1)r=r*a%P;
return r;
}
ll inv(ll x){return x<=1?1:inv(P%x)*(P-P/x)%P;}

const int N = 2e5+10;
int a[N], h[N], f[N], n, m, k, p;
struct _ {
ll day, id;
bool operator < (const _ & rhs) const {
return day>rhs.day;
}
};

priority_queue<_> q;

bool check(ll x) {
memset(f, 0, sizeof f);
while (!q.empty()) q.pop();
REP(i,1,n) if (x-(ll)a[i]*m<h[i]) q.push({x/a[i],i});
REP(i,1,m) REP(j,1,k) {
if (q.empty()) return 1;
_ u = q.top();q.pop();
if (u.day<i) return 0;
if (x+(ll)p*++f[u.id]-(ll)m*a[u.id]<h[u.id]) {
q.push({(x+(ll)p*f[u.id])/a[u.id],u.id});
}
}
return q.empty();
}

int main() {
scanf("%d%d%d%d", &n, &m, &k, &p);
REP(i,1,n) scanf("%d%d",h+i,a+i);
ll l=0, r=1e15, ans;
while (l<=r) check(mid)?ans=mid,r=mid-1:l=mid+1;
cout<<ans<<endl;
}
```

## Mr. Kitayuta vs. Bamboos CodeForces - 505E (堆,二分答案)的更多相关文章

1. Mr. Kitayuta vs. Bamboos

Mr. Kitayuta vs. Bamboos 题目链接:http://codeforces.com/problemset/problem/505/E 参考:http://blog.csdn.net ...

2. @codeforces - 506C@ Mr. Kitayuta vs. Bamboos

目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个竹子,第 i 个竹子初始高度 hi,在每天结束时将长高 a ...

3. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划

There are n people and k keys on a straight line. Every person wants to get to the office which is l ...

4. Codeforces 371C Hamburgers (二分答案)

题目链接 Hamburgers 二分答案,贪心判断即可. #include <bits/stdc++.h> using namespace std; #define REP(i,n) fo ...

5. CF505E Mr. Kitayuta vs. Bamboos

cf luogu 要使得最高的柱子高度最小,考虑二分这个高度,那么剩下的就是要指定一个操作方案,使得最终每个柱子高度\(\le mid\) 因为有个柱子高度不会\(<0\)的限制,所以正着模拟不 ...

6. 506C Mr. Kitayuta vs. Bamboos

分析 代码 #include<bits/stdc++.h> using namespace std; #define int long long ],h[],now[],cnt[]; in ...

7. CodeForces 505B Mr. Kitayuta&#39;s Colorful Graph

Mr. Kitayuta's Colorful Graph Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d ...

8. codeforces Round 286# problem A. Mr. Kitayuta&#39;s Gift

Mr. Kitayuta has kindly given you a string s consisting of lowercase English letters. You are asked ...

9. Codeforces Round #286 (Div. 1) D. Mr. Kitayuta&#39;s Colorful Graph 并查集

D. Mr. Kitayuta's Colorful Graph Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/ ...

## 随机推荐

1. Codeforces #380 div2 C(729C) Road to Cinema

C. Road to Cinema time limit per test 1 second memory limit per test 256 megabytes input standard in ...

2. cocos2dx 2.0 CCScrollView的用法以及滑动的原理

#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" USING_N ...

3. LightOj1418 - Trees on My Island（Pick定理）

题目链接:http://lightoj.com/volume_showproblem.php?problem=1418 题意:给你多边形中的顶点,n个点按顺时针或逆时针方向给出,然后求出多边形内部有多 ...

4. 部署报表和 ReportViewer 控件 rdlc

部署报表和 ReportViewer 控件 您可以将报表和 ReportViewer 控件作为应用程序的一部分自由发布.根据控件类型以及报表是配置为本地处理还是远程处理,部署要求会有很大不同.在同一个 ...

5. 深入理解java的抽象类和接口（转载）

原文链接:http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的 ...

6. IOS--UISlider的使用方法

IOS--UISlider的使用方法 // UISlider的常用方法 UISlider *oneSlider = [[UISlider alloc] init]; // 最常用 oneSlider. ...

7. poj 2782 Bin Packing (贪心+二分)

F - 贪心+ 二分 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   Description ...

8. tomcat端口占用后的解决办法

学 习网页设计的同学都会用到tomcat这个软件,在安装的时候我们一般都会选择端口为8080端口,这个端口一般情况下是不会有程序占用的,所以我们运行 tomcat不会出现什么问题,但是如果一旦别占用, ...

10. C++ #和##运算符

原文:https://blog.csdn.net/mitu405687908/article/details/51084441 #和##运算符 #:构串操作符 构串操作符#只能修饰带参数的宏的形参,它 ...