关注
作者:李济民233 链接:https://www.nowcoder.com/discuss/123368?type=0&order=0&pos=6&page=0 来源:牛客网 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=500010; const ll INF=(ll)(1e9)*maxn; int n,d,dis[maxn]; ll k,val[maxn]; ll dp[maxn]; deque<int> q; int zuo,you; bool in_range(int j,int i) { return zuo<=dis[i]-dis[j]&&dis[i]-dis[j]<=you; } bool test(int g) { if(g>=d) { zuo=1; you=d+g; } else { zuo=d-g; you=d+g; } for(int i=1;i<=n;i++) dp[i]=-INF; int L=0; q=deque<int>(); for(int i=1;i<=n;i++) { if(zuo<=dis[i]&&dis[i]<=you) dp[i]=val[i]; while(1) { if(L+1>=i) break; if(dis[i]-dis[L+1]<zuo) break; L++; if(dp[L]==-INF) continue; while(!q.empty()&&dp[q.back()]<=dp[L]) q.pop_back(); q.push_back(L); } while(!q.empty()&&!in_range(q.front(),i)) q.pop_front(); if(!q.empty()) dp[i]=max(dp[i],dp[q.front()]+val[i]); if(dp[i]>=k) return 1; } return 0; } int main() { scanf("%d %d %lld",&n,&d,&k); int mx=0; for(int i=1;i<=n;i++) { scanf("%d %lld",&dis[i],&val[i]); mx=max(mx,dis[i]); } int l=0,r=mx,ans=-1; while(l<=r) { int mid=(l+r)/2; if(test(mid)) { r=mid-1; ans=mid; } else l=mid+1; } printf("%d\n",ans); return 0; }
查看原帖
点赞 评论
相关推荐
09-12 14:49
南方科技大学 运营 点赞 评论 收藏
分享
08-14 20:53
The University of New South Wales 营销 点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 从顶到拉给所有面过的公司评分 #
12179次浏览 114人参与
# 机械人春招想让哪家公司来捞你? #
356768次浏览 3104人参与
# 为了求职,我做过的疯狂伪装 #
10140次浏览 160人参与
# 晒晒你的中秋福利 #
14663次浏览 91人参与
# 职场破冰,你们都聊什么? #
5625次浏览 57人参与
# 工作压力大怎么缓解 #
104672次浏览 1048人参与
# 机械人怎么评价今年的华为 #
208470次浏览 1524人参与
# 广联达求职进展汇总 #
10594次浏览 50人参与
# bilibili求职进展汇总 #
84103次浏览 773人参与
# 大家实习每天都在干啥 #
88586次浏览 517人参与
# 你面试被问到过哪些不会的问题? #
18117次浏览 714人参与
# 聊聊这家公司值得去吗 #
552556次浏览 3676人参与
# 实习要如何选择和准备? #
114393次浏览 1436人参与
# 秋招报数:你投了多少家公司? #
25811次浏览 259人参与
# 上班后和你想的一样吗? #
79069次浏览 630人参与
# 电网笔面经互助 #
46337次浏览 428人参与
# 秋招的嫡长offer #
24720次浏览 236人参与
# 你觉得早上几点上班合适? #
82225次浏览 329人参与
# 上班摸鱼,你都在干些什么? #
5871次浏览 102人参与
# 秋招OC许愿 #
345388次浏览 2521人参与