POJ-3111K Best
来源:互联网 发布:edius视频软件 编辑:程序博客网 时间:2024/05/19 20:47
有n个珠宝,价值为vi,重量为ni,保留m个,输出保留m个的珠宝,使其平均价值最大。
本想着用pair优化一下的。但就是WR,
也看不出自己的代码错在哪里....
本想着用pair优化一下的。但就是WR,
也看不出自己的代码错在哪里....
WA代码
#include <iostream>#include <map>#include <algorithm>#include <cstdio>#include <cstring>#include <cstdlib>#include <vector>#include <queue>#include <stack>#include <functional>#include <set>#include<sstream>#include <cmath>using namespace std;#define pb push_back#define PB pop_back#define bk back()#define fs first#define se second#define INF 1e9*2+10#define sq(x) (x)*(x)#define eps (1e-7)#define clr(x) memset((x),0,sizeof (x))#define cp(a,b) memcpy((a),(b),sizeof (b))const int maxn=100010;int n,k;pair<int,int> jew[maxn];pair<double,int> c[maxn];bool C(double m){ for(int i=0;i<n;i++) { c[i].se=i+1; c[i].fs=jew[i].fs-m*jew[i].se; } sort(c,c+n); double sum=0; for(int i=n-1;i>=k;i--) sum+=c[i].fs; return sum>0;}int main(){ cin>>n>>k; for(int i=0;i<n;i++) cin>>jew[i].fs>>jew[i].se; double left,right,mid; left=0; right=INF; for(int i=0;i<50;i++) { mid=(left+right)/2; if(C(mid)) left=mid; else right=mid; } for(int i=0;i<n;i++) { c[i].se=i+1; c[i].fs=jew[i].fs-left*jew[i].se; } sort(c,c+n); int flag=0; for(int i=0;i<k;i++) { if(flag) cout<<" "<<c[i].se; else { cout<<c[i].se; flag=1; } } cout<<endl; return 0;}AC代码;
#include <iostream>#include <map>#include <algorithm>#include <cstdio>#include <cstring>#include <cstdlib>#include <vector>#include <queue>#include <stack>#include <functional>#include <set>#include<sstream>#include <cmath>using namespace std;#define pb push_back#define PB pop_back#define bk back()#define fs first#define se second#define INF 1e18+10#define sq(x) (x)*(x)#define eps (1e-10)#define clr(x) memset((x),0,sizeof (x))#define cp(a,b) memcpy((a),(b),sizeof (b))typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> P;const int maxn=100100;int n,k;struct node{ int w; int v;}jew[maxn];struct Node{ double x; int ID; bool operator <(const Node a) const { return x>a.x; }}num[maxn];bool c(double d){ for(int i=0;i<n;i++) { num[i].x=jew[i].v-d*jew[i].w; num[i].ID=i+1; } sort(num,num+n); double sum=0; for(int i=0;i<k;i++) sum+=num[i].x; return sum>0;}int main(){ scanf("%d%d",&n,&k); for(int i=0;i<n;i++) scanf("%d%d",&jew[i].v,&jew[i].w); double left,right,mid; left=0; right=1000000+10; for(int i=0;i<50;i++) { mid=(left+right)/2; if(c(mid)) left=mid; else right=mid; } int flag=0; for(int i=0;i<n;i++) { num[i].x=jew[i].v-left*jew[i].w; num[i].ID=i+1; } sort(num,num+n); for(int i=0;i<k;i++) { if(flag) printf(" %d",num[i].ID); else { printf("%d",num[i].ID); flag=1; } } printf("\n"); return 0;}
0 0
- POJ 3111 K Best
- poj 3111 K Best
- POJ-3111K Best
- poj 3111 K Best
- POJ 3111K Best
- POJ 3111 K Best 笔记
- poj 3111 K Best 二分
- POJ 3111 K Best 最大化平均值
- POJ 3111 - K Best(二分搜索)
- POJ 3111 K Best(最大化平均值)
- POJ 3111 K Best(最大化平均值)
- POJ 3111 K Best <最大化平均,二分>
- poj 3111 K Best(二分)
- POJ 3111 K Best 【二分:最大化平均值】
- POJ 3111 K Best 二分 最大化平均值
- POJ 3111:K Best(思维+二分)
- POJ 3111 K Best 01分治
- K Best POJ
- iOS开源项目之 日志框架CocoaLumberjack
- SessionStorage LocalStorage cookie三者区别
- js 比较两个日期大小
- ubuntu启动eclipse时出错cannot open display
- iphone启动页的设置方式
- POJ-3111K Best
- Android内存优化杂谈
- 如何为 MFC 应用程序创建本地化资源 DLL
- 图像处理之——膨胀、腐蚀算法详解
- WeUI logo专为微信设计的 UI 库 WeUI
- 使用OC进行实现GET和POST请求
- 一个checkMobile方法的实现
- Solr常见异常
- Anaconda 32在windows下安装gensim