POJ2976: Dropping Tests 题解

POJ2976 Dropping tests——P4377 [USACO18OPEN] Talent Show G 【分数规划二分法+贪心/背包】 阅读详情

经典的01分数规划问题
01分数规划通常解决这样的问题
给定nn个元素,每个元素都有两个属性值ai,bibi,要选出其中的k个c1,c2...ckc1,c2...ck,最大化∑ki=1aci∑ki=1bci∑i=1kaci∑i=1kbci
解决这样的问题我们可以考虑二分答案
假设当前二分出的答案是xx,我们考虑是否能选出k个元素满足条件
可以发现

∑i=1kaci∑i=1kbci≥x⟺∑i=1kaci−x∑i=1kbci≥0⟺∑i=1k(aci−xbci)≥0

所以将所有元素按照ai−xbiai−xbi排序,取前kk个判sum是否大于0就好(这题中是前n−kn−k个)

#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <utility>
#include <cctype>
#include <algorithm>
#include <bitset>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <cmath>
#define LL long long
#define LB long double
#define x first
#define y second
#define Pair pair<int,int>
#define pb push_back
#define pf push_front
#define mp make_pair
#define LOWBIT(x) x & (-x)
#define DEBUG(...)
using namespace std;

const int MOD=1e9+7;
const LL LINF=2e16;
const int INF=2e9;
const int magic=348;
const double eps=1e-10;

inline int getint()
{
    char ch;int res;bool f;
    while (!isdigit(ch=getchar()) && ch!='-') {}
    if (ch=='-') f=false,res=0; else f=true,res=ch-'0';
    while (isdigit(ch=getchar())) res=res*10+ch-'0';
    return f?res:-res;
}

int n,k;
double l,r,mid;

struct node
{
    double a,b;
    inline bool operator < (const node &x) const {return a-mid*b>x.a-mid*x.b;}
}a[10048];

inline bool check()
{
    int i;
    sort(a+1,a+n+1);
    double A=0,B=0;
    for (i=1;i<=n-k;i++) A+=a[i].a,B+=a[i].b;
    if (A/B>=mid) return true; else return false;
}

int main ()
{
    int i;double ans;
    while (scanf("%d%d",&n,&k) && !(!n && !k))
    {
        for (i=1;i<=n;i++) a[i].a=getint();
        for (i=1;i<=n;i++) a[i].b=getint();
        l=0;r=1;ans=0;
        while (r-l>1e-6)
        {
            mid=(l+r)/2;
            if (check()) ans=mid,l=mid; else r=mid;
        }
        printf("%d\n",int(ans*100+0.5));
    }
    return 0;
}
2025美赛C题奥运奖牌榜模型(附代码+全保姆教程)Models for Olympic Medal Tables 伟大教练”效应的测量方法定义奖牌变化率:−−​如果变化率显著为正,且超出历史平均增长率,则认为存在“伟大教练”效应。使用统计方法(如t检验)验证教练到来是否带来显著性差异。 阅读详情

相关推荐

AvFrame和AvPacket

在FFmpeg中,未压缩的图像和压缩的视频码流分别使用AVFrame结构和AVPacket结构保存;针对视频编码器,其流程为从数据源获取图像格式的输入数据,保存为AVFrame对象并传入编码器,从编码器输出AVPacket结构。

Lce的专栏 3236

POJ---2976(二分,最大化平均值详细讲解)

题意: 最大化平均值的模型: 有N个物品的重量和价值分别为Wi和Vi,从中选取K个物品使得单位重量的价值最大。也就是使得K个物品的ΣVi /ΣWi最大。 使用二分搜索解决这类问题: ΣVi /ΣWi >= x也就是Σ(Vi-x*Wi)>=0。X越大,式子左边越小,一直逼到=0的边界! 贪心思想去找最大的可行解x即可:对Vi-X*Wi排序,选取前K个看是否>=0!  本题也就是这个模

sgh666666的博客 814

ThingsKit物联网平台产品管理之物模型

物模型是ThingsKit物联网平台为产品定义的数据模型,用于描述产品的功能。本文介绍物模型相关概念和使用限制。

云腾五洲官方博客 1174

POJ 2976 (最大化平均值)

题意: 给出n个题的分数,给定n个二元组(a,b),删除k个二元组, 使得剩下的a元素之和与b元素之和的比率最大(比率最后乘100输出) though: a/b = max(m),可以化简为a-m*b ,当a/b最大的时候a-m*b <= 0,所以 二分m。找到精度足够小的解。 #include <iostream> #include <cstdio> #include <cst

Since_natural_ran 667

Android WIFI体系:深入解析WifiLock与MulticastLock的底层实现与性能优化

本文深入解析Android WIFI体系中WifiLock与MulticastLock的底层实现机制与性能优化策略。WifiLock通过阻止Wi-Fi休眠提升网络性能,尤其WIFI_MODE_FULL_HIGH_PERF模式可显著降低延迟;MulticastLock则控制组播数据接收,但会增加功耗。文章详细探讨了其与wpa_supplicant、HAL层的交互,并提供高性能场景下的优化实践与功耗平衡方案。

php55的博客 1079

MOSFET开关损耗全面讲解:从原理到优化策略

深入剖析MOSFET开关损耗的产生机制,结合实际应用场景,讲解如何通过驱动设计和电路优化降低损耗,提升系统效率。重点关注mosfet在高频开关下的表现与热管理。

weixin_29476595的博客 1059

POJ-2976 Dropping tests(01分数规划入门)

In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cumulative average is defined to be. Given your test scores and a positive integer k, determine how high you can make your cumulative average if you are allowe

yo_bc的博客 568

家用智能监控摄像机如何使用NAS进行存储/备份(小米智能摄像机如何解决群晖 / 飞牛 NAS 识别失败、文件目录不显示问题)

小米摄像头NAS存储总出问题?🤯 别慌!本文揭秘NAS底层逻辑,群晖、飞牛实战指南。手把手教你排查解决所有难题,轻松搞定监控录像安全备份!🔒

XiaoqiangClub的博客 2698

POJ 2976(01分数规划)

题目链接:http://poj.org/problem?id=2976   题目大意:求去掉k组数据后,a的和/b的和*100的最大值   题目思路:假设最大值为x,则需要的就是取n-k个数字a[i]的和/b[i]的和=x,那么我们可以移项,把b[i]的和乘过去然后移到左边减掉。问题也就转变成了 选n-k个数字使得a[i]-b[i]*x的和等于0,那么就可以采用二分来枚举x,对a[i]-b...

smilestruggler_Fly To Higher 333

【STK】手把手教你利用STK进行光电红外仿真03-STK/EOIR模块属性之二 导弹等目标的EOIR设置

上一节介绍了如何设置传感器的通用属性和空间、光学、光谱、辐射四种专项属性。这一节介绍如果对导弹等目标的EOIR属性进行修改。

weixin_44184852的博客 2204

分析4-20mA检查电路分析

本文介绍了一种工业领域常用的4-20mA电流信号调理电路,可将标准电流信号转换为适合MCU采集的电压信号。电路包含三个关键模块:首先通过10Ω取样电阻将4-20mA电流转换为0.04-0.2V电压;然后采用同向比例运算放大器KTA333-ST5进行信号放大;最后通过二阶有源低通滤波器滤除工业环境中的高频干扰。文章详细分析了各模块的工作原理和参数设计,并以压力传感器和温度变送器为例说明了实际应用中的参数调整方法。该电路具有抗干扰能力强、精度高等特点,适用于工业压力、温度等模拟量信号的采集处理。

qq_37999850的博客 1331

POJ2976:Dropping tests——题解

http://poj.org/problem?id=2976 题目大意:给定n个二元组(a,b),从中取n-k个,使得100*∑a/∑b最大。 01分数规划裸题,设λ是小于等于最优解的,那么λ<=∑a/∑b,先通过移项来得到新的表达法∑a-λ∑b>=0。 就可以二分答案做了。 #include<cstdio> #include<cstring&g...

weixin_34310785的博客 103

【AI智能体】全场景AI智能体工作台WorkBuddy实战操作详解

全场景AI智能体工作台WorkBuddy实战操作详解

congge 5501

Poj-2976 Dropping tests (01分数规划)

POJ 2976 Dropping tests 题解 《挑战程序设计竞赛》 [Algorithm]01分数规划——Update:2012年7月27日 // 条件C(x):=可以选择使得单位重量的价值不小于x #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&...

ó 219

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Dropping tests

题目链接:http://poj.org/problem?id=2976 Dropping tests Time Limit:1000MS Memory Limit:65536K Total Submissions:20830 Accepted:7052 Description In a certain cour...

141

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[POJ2976] Dropping tests

题意n个二元组(ai,bi)(a_i,b_i),选定n-K个二元组使得∑ai∑bi\frac{\sum a_i}{\sum b_i}最大题解基本的01分数规划问题 weighti=valuei−r⋅costiweight_i = value_i-r\cdot cost_i,max{f(r)}max\{f(r)\}求和前n+K大的weightiweight_i即可。 至于为什么WA嘛,改改精度,c

ztx 2058

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Dropping tests POJ - 2976(01分数规划问题)

01分数规划问题:Dropping tests POJ - 2976 黑洞内窥: 给出公式:, 多组输入,每组输入n,k,n个ai,n个bi,,你可以删除最多k组ai,bi,来使得上式的值达到最大。 思维光年: 最简单粗暴的想法:取出每对ai,bi的分数比例,sort一下,从后往前取,输出完事。。 wa了两次后,,,感觉有坑,,应该是精度问题不够,,, 于是暴力二分概率(...

浦柳人的博客 204

POJ 2976 Dropping tests:01分数规划【二分】

题目链接:http://poj.org/problem?id=2976 题意:   共有n场考试,每场考试你得的分数为a[i],总分为b[i]。   你可以任意去掉k场考试。   问你最大的 100.0 * ( ∑ a[i] / ∑ b[i] )的值。(四舍五入) 题解:   相当于从n场考试中选n-k场。   二分:     二分最大答案 ∑ a[i]...

a1392136的博客 100

【POJ 2976 Dropping tests】

Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 13849Accepted: 4851 Description In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cumul...

dichenbo4001的博客 101

[基础算法题解]POJ2976 Dropping tests

分数规划问题

2501_93917907的博客 388

POJ 2976 Dropping tests

题目大意 %  给定 nnn 个物品,每个物品有两个参数,aia_iai​ 和 bib_ibi​,删除 kkk 个物品,最大化z=100×∑ai∑bi.z=\cfrac{100\times{\sum} a_i}{{\sum}b_i}.z=∑bi​100×∑ai​​. %  数据范围 1⩽k⩽n⩽10001\leqslant k\leqslant n\leqslant 10001⩽k⩽n⩽1000,...

linjiayang2016的博客 147

POJ 2976 - Dropping tests(二分搜索)

题目: http://poj.org/problem?id=2976 题意: n组数a,b, a组做分子,b组做分母,除去其中的任意k组,求出最大的数. 思路: 二分,求最大化平均值. 与挑战程序设计144页例题类似. 需要注意的是输出: double a = 4.3, b = 4.7; printf("%d %d\n", (int)a, (int)b);    4 4 prin

Halo 538

POJ 2976 Dropping tests 【01分数规划+二分】

题目链接:http://poj.org/problem?id=2976 Dropping tests Time Limit:1000MS Memory Limit:65536K Total Submissions:17838 Accepted:6186 Description In a certain course, y...

weixin_30369087的博客 131

POJ2976 - Dropping tests——分数规划

题目描述 In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cumulative average is defined to be Given your test scores and a positive integer k, determine h...

chm_wt的博客 212

Poj 2976 Dropping tests(二分)

题目地址:http://poj.org/problem?id=2976 思路:max{sigma(a[i])/sigma(b[i])}。设r=sigma(a[i]*x[i])/sigma(b[i]*x[i])(x[i]=0,1)。则sigma(a[i]*x[i])-r*sigma(b[i]*x[i])=0,而sigma(a[i]*x[i])-max(r)*(sigma(b[i]*x[i]))0,

哆啦AC梦的博客 402

二分算法的应用——最大化平均值 POJ 2976 Dropping tests

二分算法的应用——最大化平均值 POJ 2976 Dropping tests 最大化平均值 有n个物品的重量和价值分别wi 和 vi。从中选出 k 个物品使得 单位重量 的价值最大。 限制条件: 1 <= k <= n <= 10^4 1 <= w_i <= v_i <= 10^6输入:n = ...

豆子 238
上一篇: HDU1693: Eat the Trees 题解
下一篇: BZOJ4753: 最佳团体 题解
IcePrincess_1968
博客等级 码龄9年 13粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值