一、题意

  给出你的N门课程的考试成绩和所占的机电数目。允许你放弃K门课的成绩,要求你的平均学分绩最高能达到多少。

Kanade selected n courses in the university. The academic credit of the i-th course is s[i] and the score of the i-th course is c[i].

At the university where she attended, the final score of her is 

Now she can delete at most k courses and she want to know what the highest final score that can get.

二、题解

  对于这道题直观的思路就是“猜一个目标学分绩点”之后验证在抛弃k门课的基础上,是否可以达到目标学分绩点。

  对于每个目标学分绩点,对所有成绩进行一轮排序使得:拉低给定平均学分绩点最多的科目排在最前面,拉高给定平均学分绩点的成绩排在最后面。

  则,该思路可以规避一些比较难想的复杂操作。

#include<bits/stdc++.h>
using namespace std; #define ll long long
#define veci vector<int> const int MAXN=;
const double EXP = 1e-; double sum_credit;
double sum_mul;
double target_gread; double arr[MAXN];
double brr[MAXN];
int courses[MAXN];
int n,k; bool cmp_tar(int a,int b)
{
double tmpa = (target_gread *(sum_credit - arr[a]) + brr[a]*arr[a])/sum_credit - target_gread;
double tmpb = (target_gread * (sum_credit - arr[b]) + brr[b]*arr[b])/sum_credit - target_gread;
return tmpa < tmpb;
} bool check(double target)
{
target_gread = target;
sort(courses,courses+n,cmp_tar); // cout<<"seq1: ";
// for(int i=0;i<n;++i)
// cout<<arr[courses[i]]<<" ";
// cout<<endl<<"seq2: ";
// for(int i=0;i<n;++i)
// cout<<brr[courses[i]]<<" ";
// cout<<endl; double ans = ;
double summ = ;
for(int i=min(k,n-);i<n;++i)
{
// cout<<"arr: "<<arr[courses[i]]<<" brr: "<<brr[courses[i]]<<endl;
ans += arr[courses[i]] * brr[courses[i]];
summ += arr[courses[i]];
}
// cout<<"check: "<<target<<" "<<ans<<" "<<summ<<endl; ans /= summ;
return ans>=target;
} double bin_search(double a,double b)
{ // cout<<a<<" : "<<b<<endl;
if(abs(a-b)<=EXP)
return a; double mid = (a+b)/;
if(check(mid))return bin_search(mid,b);
else return bin_search(a,mid);
} void init()
{
sum_credit = sum_mul = ;
for(int i=;i<n;++i)
scanf("%lf",&arr[i]);
for(int i=;i<n;++i)
{
sum_credit += arr[i];
scanf("%lf",&brr[i]);
sum_mul += arr[i]*brr[i];
courses[i] = i;
}
printf("%.6lf\n",bin_search(,));
} int main(){ cin>>n>>k;
init(); return ;
}

牛客暑假多校第五场A.gpa的更多相关文章

  1. 牛客暑假多校第五场 D inv

    题意:给你一个n, 接来下给你一个 [1,n] 中偶数的排列, 还有一个 [1, n] 中 奇数 按照递增的顺序排列, 现在求一个原数列, 使得偶数列排序 和 奇数列 都是原数列的一个子序列, 现在求 ...

  2. 牛客暑假多校第五场 I vcd

    这个题目一个队友没读懂, 然后我读错了题目, 还让他堆了半天的公式写了半天的代码, 交上去一直0.0, 另一队友问题目有没有读错, 我坚持没有读错, 然后坑了2个小时的时间,不然应该会早一点做出来. ...

  3. 牛客2018多校第五场E-room 最小费用最大流

    题意:有n个寝室,每个寝室4个人,现在在搞搬寝室的活动,告诉你每个寝室之前的人员名单,和之后的人员名单,问最少需要几个人要搬寝室. 思路: 转化为最小费用最大流解决的二分图问题,对每个去年的宿舍,向每 ...

  4. 牛客暑假多校第六场I-Team Rocket

    一.题意 我们是穿越银河的火箭队....... 给出若干个区间,之后给出若干个点,要求对每个点求出,第一个覆盖点的区间的数量,之后用当前所有点覆盖的区间的序号的乘积结合输入的Y来生成下一位点.最后输出 ...

  5. 牛客暑假多校第六场 I Team Rocket

    题意: 现在有n条火车, 每条火车都有一个运行 [ Li, Ri ], 现在有m支火箭队, 每次火箭队都会破坏这整条铁路上的一个点, 如果一条火车的运行区间[Li, Ri] 被破坏了, 那么这条火车会 ...

  6. 2019牛客暑期多校第五场题解ABGH

    A.digits 2 传送门 题意:给你一个n,要求输出一个每一位数字之和能整除n且其本身也能整除n的数.n不超过100,要求的数不超过10000位数. 题解:直接将n输出n次. 代码: #inclu ...

  7. 2020牛客暑假多校训练营 第二场 H Happy Triangle set 线段树 分类讨论

    LINK:Happy Triangle 这道题很容易. 容易想到 a+b<x a<x<b x<a<b 其中等于的情况在第一个和第三个之中判一下即可. 前面两个容易想到se ...

  8. 2020牛客暑假多校训练营 第二场 G Greater and Greater bitset

    LINK:Greater and Greater 确实没能想到做法. 考虑利用bitset解决问题. 做法是:逐位判断每一位是否合法 第一位 就是 bitset上所有大于\(b_1\)的位置 置为1. ...

  9. 2020牛客暑假多校训练营 第二场 E Exclusive OR FWT

    LINK:Exclusive OR 没做出 原因前面几篇说过了. 根据线性基的知识容易推出 不超过\(w=log Mx\)个数字即可拼出最大值 其中Mx为值域. 那么考虑w+2个数字显然也为最大值.. ...

随机推荐

  1. meat标签使用

    meta是html语言head区的一个辅助性标签.几乎所有的网页里,我们可以看到类似下面这段的html代码: <head> <meta http-equiv="conten ...

  2. 安装PYTHON PIL包

    安装pillow而不是PIL pip install pillow 参考: https://github.com/python-pillow/Pillow

  3. [POI2014]MRO-Ant colony

    嘟嘟嘟 题面很迷,看这个吧. 首先暴力很简单,从每一个叶子节点开始爬,直到那条特殊的边. 正解稍微想想就能搞出来:(x, y)这条特殊的边把整棵树分成了两部分,然后我们分别从x, y开始在他的那部分子 ...

  4. 【转】Android应用程序窗口(Activity)窗口对象(Window)创建指南

    在前文中,我们分析了Android应用程序窗口的运行上下文环境的创建过程.由此可知,每一个Activity组件都有一个关联的ContextImpl对象,同时,它还关联有一个Window对象,用来描述一 ...

  5. 【PHP后台】接入支付宝

     我使用PHP主要是为客户端做后台使用,并不会做前端网页.   这两天因为公司项目需要,必须接入支付功能,而支付宝当然首当其冲,考虑迭代版本的需要,首先接入支付宝功能,其他的支付功能以后迭代版本的时候 ...

  6. sting.Contains()方法

    作用: 返回一个值,判断给定的string对象 是否出现在指定的字符串当中 例子: if(str_arr[i].Contains(textBox1.Text)){//检查是否有匹配

  7. 2018.11.7 关于将Web项目部署到阿里云服务器-5个步骤搞定

    将Eclipse导出的War包部署到阿里云服务器上,提供给移动端实时的访问 1. 先登录阿里云网站注册账号,选择服务器类型(我用的是 云服务器ECS), 如果你还是在读大学生可享受优惠价,最低好像是9 ...

  8. 2018.10.31 Mac下的Mysql修改字符编码修改的问题总结

    今天在弄数据库的时候发现存入中文汉字变成了问号,Mac跟windows处理方式不一样. show variables like '%char%'; 查看当前mysql的编码格式 也就是默认编码格式 + ...

  9. 2017.9.12 初入HTML -----学习总结(二)

    接上:..... (4)标记可分为: 4.1单标记:(单标记仅单独使用就可以表达完整的意思) 基本语法:<标记名称/> 例如:<br/>实现换行的功能.<hr/>实 ...

  10. 百度提供的LBS服务

    并不是所有 LBS 云服务 都可以使用 js Ajax 访问,涉及跨域问题 (Jsonp 方式解决)Jsonp 解决跨域问题原理,在页面生成<script> 加载远程 js 代码片段.在L ...