关注
作者:李济民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; }
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
10-31 10:21
大连理工大学 C++ 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
162270次浏览 2747人参与
# 长城汽车工作体验 #
12608次浏览 16人参与
# 牛客2025仙途报告 #
169次浏览 3人参与
# 你面试体验感最差/最好的公司 #
10910次浏览 185人参与
# 大家实习每天都在干啥 #
105742次浏览 569人参与
# 总结:哪家公司面试体验感最差 #
83059次浏览 387人参与
# 比亚迪工作体验 #
72591次浏览 275人参与
# 一人说一个提前实习的好处 #
6466次浏览 123人参与
# 秋招落幕,你是He or Be #
6562次浏览 148人参与
# 重来一次,你会对开始求职的自己说 #
4583次浏览 117人参与
# 实习没事做是福还是祸? #
11063次浏览 180人参与
# 今年你最想重开的一场面试是? #
2188次浏览 34人参与
# 团建是“福利”还是是 “渡劫” #
5480次浏览 131人参与
# 你小心翼翼的闯过多大的祸? #
9127次浏览 130人参与
# 运营来爆料 #
71515次浏览 450人参与
# 长鑫存储求职进展汇总 #
52043次浏览 240人参与
# 招聘要求与实际实习内容不符怎么办 #
144020次浏览 869人参与
# 工作中听到最受打击的一句话 #
4021次浏览 81人参与
# 如何排解工作中的焦虑 #
246315次浏览 2268人参与
# 大厂VS公务员你怎么选 #
72927次浏览 666人参与

