当前位置: 首页 > news >正文

分数规划(二分)

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

小咪是一个土豪手办狂魔,这次他去了一家店,发现了好多好多(n个)手办,但他是一个很怪的人,每次只想买k个手办,而且他要让他花的每一分钱都物超所值,即:买下来的东西的总价值/总花费=max。请你来看看,他会买哪些东西吧。

输入描述:

 

多组数据。

第一行一个整数T,为数据组数。

接下来有T组数据。

对于每组数据,第一行两个正整数n,k,如题。

接下来n行,每行有两个正整数ci,vi。分别为手办的花费和它对于小咪的价值。

输出描述:

对于每组数据,输出一个数,即能得到的总价值/总花费的最大值。精确至整数。

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n,k;
struct fx{ll c,v;double y;
};
fx a[10003];
ll check(double x)
{for(ll i=1;i<=n;i++){a[i].y=a[i].c*1.0-x*a[i].v;}sort(a+1,a+1+n,[](fx p,fx q){return p.y>q.y;});double f=0;for(ll i=1;i<=k;i++){f+=a[i].y;}return f<0;
}
void solve()
{cin>>n>>k;for(ll i=1;i<=n;i++){cin>>a[i].v>>a[i].c;}double l=0;double r=0;for(ll i=1;i<=n;i++)r+=a[i].c;for(ll i=0;i<100;i++){double mid=l+(r-l)/2;if(check(mid))r=mid;else l=mid;}cout<<ll(l)<<'\n';
}
int main()
{ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ll t=1;cin>>t;while(t--)solve();return 0;
}

http://www.lryc.cn/news/140512.html

相关文章:

  • Vue2向Vue3过度Vue3状态管理工具Pinia
  • STM32--SPI通信与W25Q64(1)
  • 版本控制工具Git常见用法
  • Multisim软件安装包分享(附安装教程)
  • 【android12-linux-5.1】【ST芯片】HAL移植后开机卡死
  • 线程池也就那么一回事嘛!
  • 设计模式(11)观察者模式
  • 开源的安全性:挑战与机会
  • wireshark 流量抓包例题重现
  • Smartbi电子表格软件版本更新,首次推出Excel轻应用和语音播放
  • ElasticSearch简介、安装、使用
  • Navicat 连接 mysql 问题
  • Adobe Media Encoder软件安装包分享(附安装教程)
  • [C#][原创]操作注册表一些注意点
  • “华为杯”研究生数学建模竞赛2016年-【华为杯】C题:基于无线通信基站的室内三维定位问题
  • 双目视觉之-棋盘格标定板制作
  • 自然对数底e的一些事
  • React Hooks 全解:零基础入门
  • webrtc在js里的实现
  • 熊猫:完整的初学者指南
  • 【Go】Go语言并发编程:原理、实践与优化
  • HTTPS协议加密原理
  • L1-034 点赞(Python实现) 测试点全过
  • MySQL 存储过程 循环处理数据 while repeat
  • 基于配置类方式管理 Bean
  • 最新CMS指纹识别技术
  • 快速入门学习记录:常用代码、特定函数、复杂概念和特定功能说明
  • 【win视频播放器】HEVC视频扩展
  • React+Typescript 父子组件事件传值
  • python人工智能和机器学习