一、题意

  给出你的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 ;
}

最新文章

  1. matlab更改打开时候默认路径
  2. Android WebService
  3. Windows资源管理器 已停止工作
  4. BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler错误的解决方法
  5. 《锋利的jQuery》
  6. C++类型引用浅析
  7. http协议通信原理的问答
  8. c# 控制IE浏览器
  9. 在MVC3中使用WebForm
  10. ural 1203. Scientific Conference(动态规划)
  11. 取消a标签的页面跳转
  12. 【DevExpresss】3、LookUpEdit详解(转载)
  13. 桥接模式 桥梁模式 bridge 结构型 设计模式(十二)
  14. JDK源码分析(6)之 LinkedHashMap 相关
  15. Restful API设计规范及实战
  16. json2csharp &amp; json 格式化
  17. python的var_dump,打印对象内容
  18. finecms同时调用子栏目和子栏目的文章怎么操作
  19. Python 訪问 LinkedIn (API)
  20. Unity全面优化

热门文章

  1. 一点一点学写Makefile(3)-增加第三方库和头文件
  2. cJSON库源码分析
  3. 数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2&#183;&#183;&#183;am),(b1,b2&#183;&#183;&#183;bn),将两个顺序表位置互换
  4. IOS PushMeBaby(是一款用来测试ANPs的开源Mac项目)
  5. HDU 4757 Tree(可持续化字典树,lca)
  6. Black Rock Shooter 题解
  7. echarts图表与可视窗口的自适应
  8. stn,spatial transformer network总结
  9. 商城管理系统项目(前台+后台+管理员+用户+html+jsp)
  10. 【luogu T34117 打油门】 题解