关注
作者:李济民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; }
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
10988次浏览 148人参与
# 第一次面试 #
1072824次浏览 13736人参与
# 牛客AI体验站 #
17262次浏览 297人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
329228次浏览 2128人参与
# 你喜欢工作还是上学 #
89949次浏览 888人参与
# 被AI治愈的瞬间 #
91177次浏览 690人参与
# 有必要和同事成为好朋友吗? #
1892次浏览 34人参与
# 虾皮求职进展汇总 #
378427次浏览 2795人参与
# 百度求职进展汇总 #
667826次浏览 6293人参与
# 招聘要求与实际实习内容不符怎么办 #
169601次浏览 926人参与
# 如果不上班,你会去做什么 #
29524次浏览 466人参与
# 非技术岗薪资爆料 #
491550次浏览 3047人参与
# 你找工作的时候用AI吗? #
173874次浏览 893人参与
# 产品薪资爆料 #
159040次浏览 855人参与
# 你觉得什么岗位会被AI替代 #
41793次浏览 283人参与
# 考研失败就一定是坏事吗? #
222640次浏览 1543人参与
# 国企vs私企,你更想去? #
320217次浏览 2532人参与
# 我的求职精神状态 #
431991次浏览 3082人参与
# 秋招想进国企该如何准备 #
127625次浏览 620人参与
# 卷__卷不过你们,只能卷__了 #
42423次浏览 669人参与
