SDUT:2157 Greatest Number(中途相遇法)
来源:互联网 发布:药品价格查询软件 编辑:程序博客网 时间:2024/04/29 22:26
题意:一些数,选4个(可重复),输出最接近给定数字的和。
思路:经典题目,使用中途相遇法可做。先枚举两个数字,求和存入并排序。再枚举两个数字,根据缺少部分,二分之前的和,取最大值。
STL是神器,要学会使用。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <map>#include <vector>using namespace std;typedef long long LL;const int maxn=1005;int a[maxn];vector<LL> v;int main(){ int n,kase=0; LL sum; while(cin>>n>>sum) { if(!n&&!sum) break; for(int i=0; i<n; ++i) cin>>a[i]; v.clear(); for(int i=0; i<n; ++i) for(int j=i; j<n; ++j) v.push_back(a[i]+a[j]); sort(v.begin(),v.end()); LL ans=0; for(int i=0; i<n; ++i) for(int j=i; j<n; ++j) { LL res=sum-a[i]-a[j]; int it=upper_bound(v.begin(),v.end(),res)-v.begin(); if(it!=0||(it==v.size()&&v[it-1]<=res)) ans=max(ans,a[i]+a[j]+v[it-1]); } cout<<"Case "<<++kase<<": "<<ans<<endl<<endl; } return 0;}
0 0
- SDUT:2157 Greatest Number(中途相遇法)
- uva10125 (中途相遇法)
- 中途相遇法
- poj3977 Subset 中途相遇法...
- UvaLive 2965 中途相遇法
- HDU5936 Difference 【中途相遇法】
- poj 1903 中途相遇法
- Jurassic Remains,NEERC 2003,中途相遇法
- uva 1326 Jurassic Remains(中途相遇法)
- Uva 1326 - Jurassic Remains 中途相遇法
- LA 2965 - Jurassic Remains 中途相遇法
- LA 2965 Jurassic Remains / 中途相遇法
- uva1326 - Jurassic Remains 中途相遇法
- UVa 10125 - Sumsets (中途相遇法 hash)
- 【UVALive】2965 Jurassic Remains 中途相遇法
- UVA - 1326 (中途相遇法 + 统计奇偶)
- UVA 1326 Jurassic Remains 中途相遇法
- codefoce 297 - E(中途相遇法)
- ios模仿android屏幕密度控件自动适配方案
- 图解Android - Looper, Handler 和 MessageQueue
- Maina Back 二回放送
- debug of CUDA
- Android/Java面试题,边面试边成长,为了应试而应试
- SDUT:2157 Greatest Number(中途相遇法)
- DLNA 原理
- 冠榕智能灯光控制协议分析(controller init)
- log4j配置,转载,备忘,讲的很好。
- MySQL性能优化(一)
- Asp.net设计模式笔记之一:理解设计模式
- Android 内存溢出解决方案(OOM) 整理总结
- libcurl 使用记录1(回调函数出错)
- 图解Android - Android GUI 系统 (1) - 概论