NYIST 914 Yougth的最大化
Yougth的最大化
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述
Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗?
输入
有多组测试数据,每组测试数据第一行有两个数n和k,接下来一行有n个数Wi和Vi。(1<=k=n<=10000) (1<=Wi,Vi<=1000000)
输出
输出使得单位价值的最大值。(保留两位小数)
样例输入
3 2
2 2
5 3
2 1
样例输出
0.75
来源
Yougth
上传者
TC_杨闯亮
解题:01分数规划
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <climits>
#include <vector>
#include <algorithm>
#include <cmath>
#include <sstream>
using namespace std;
const double exps = 1e-;
struct xyz {
int w,v;
double c;
} p[];
inline bool cmp(const xyz &a,const xyz &b) {
return a.c > b.c;
}
double ans(double t,const int &n,const int &k) {
int i,a = ,b = ;
double q = 0.0;
for(i = ; i < n; i++)
p[i].c = p[i].v - t*p[i].w;
sort(p,p+n,cmp);
for(i = ; i < k; i++) {
a += p[i].v;
b += p[i].w;
}
q = a*1.0/b;
if(fabs(q-t) < exps) return q;
return ans(q,n,k);
}
int main() {
int n,k,i;
while(~scanf("%d %d",&n,&k)) {
for(i = ; i < n; i++)
scanf("%d %d",&p[i].w,&p[i].v);
printf("%.2f\n",ans(0.5,n,k));
}
return ;
}
NYIST 914 Yougth的最大化的更多相关文章
- NYOJ 914 Yougth的最大化
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 Yougth如今有n个物品的重量和价值各自是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- NYOJ 914 Yougth的最大化【二分/最大化平均值模板/01分数规划】
914-Yougth的最大化 内存限制:64MB 时间限制:1000ms 特判: No 通过数:3 提交数:4 难度:4 题目描述: Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从 ...
- ACM Yougth的最大化
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- Yougth的最大化(好题,二分查找 0 1分数规划)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- NYIST 1030 Yougth's Game[Ⅲ]
Yougth's Game[Ⅲ]时间限制:3000 ms | 内存限制:65535 KB难度:4 描述有一个长度为n的整数序列,A和B轮流取数,A先取,每次可以从左端或者右端取一个数,所有数都被取完时 ...
- 问题 L: Yougth的最大化
题目描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗? 输入 有多组测试数据 每组测试数据第一行有两个数n和k,接下来一行有n个数Wi和V ...
- nyoj914Yougth的最大化(二分搜索 + 贪心)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗 ...
- nyoj--914--Yougth的最大化(二分查找)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最 ...
- NYIST 914Yougth的最大化【二分搜索/Dinkelbach算法】
转载请注明出处:http://www.cnblogs.com/KirisameMarisa/p/4187637.html 题目链接:http://acm.nyist.net/JudgeOnline/p ...
随机推荐
- 一张图告诉你Git的所有命令
- HDU 3656 二分+dlx判定
Fire station Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- 2017 Multi-University Training Contest - Team 2 &&hdu 6050 Funny Function
Funny Function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- PCB MS SQL CLR聚合函数(函数作用,调用顺序,调用次数) CLR说明
用CLR写函数:标量函数,表值函数 很好理解,如果用聚合函数则不是那么好理解了, 这里将CLR函数说明一下,其实关键是对聚合函数说明 用CLR写聚合函数关键点,是要理解CLR与SQL是如何进行数据交互 ...
- MSSQL:账号无法删除方案
1.查询 EXEC sp_who 'WIN-GBKBCVTG4CN\Administrator' 返回一个表格,其中有列[spid] 2.删除 kill spid
- POJ 3322 Bloxorz I
首先呢 这个题目的名字好啊 ORZ啊 如果看不懂题意的话 请戳这里 玩儿几盘就懂了[微笑] http://www.albinoblacksheep.com/games/bloxorz 就是这个神奇的木 ...
- C#方法的练习
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Demo ...
- 子线程更新UI
https://www.cnblogs.com/joy99/p/6121280.html
- 【Oracle】redo与undo
一 .redo(重做信息) 是Oracle在线(或归档)重做日志文件中记录的信息,万一出现失败时可以利用这些数据来“重放”(或重做)事务.Oracle中记录这些信息的文件叫做redo log file ...
- C#使用各种时间戳及转换
/// <summary> /// DateTime时间格式转换为13位带毫秒的Unix时间戳 /// </summary> /// <param name=" ...