【贪心】【01规划】luogu 1570 KC喝咖啡

来源:互联网 发布:手机缩小图片尺寸软件 编辑:程序博客网 时间:2024/03/28 20:31

题目链接:http://oj.luogu.org:8888/problemshow.php?pid=1570

分析:
1、裸搞。

按比值降序排列,然后去前m个

60分。

2、0 1 分数规划

 关于 0 1 规划:http://blog.csdn.net/hhaile/article/details/8883652

设最终答案为R,x[i]为0或1,则 Σ(v[i]*x[i]) / Σ(c[i]*x[i]) = R

即 Σ(v[i]*x[i]) - Σ(c[i]*x[i]*R) =0

即 Σ[(v[i]*x[i]) - (c[i]*x[i]*R)] =0

设 f(R)= Σ[(v[i]*x[i]) - (c[i]*x[i]*R)]

二分R,求f(R)=0

当f(R)<0时,R偏大

当f(R)>0时,R偏小

计算每一对 v[i] - (c[i]*R),排序求前m大的和即为f(R) 。

代码:

60:

#include<cstdio>  #include<cmath>  #include<algorithm>  using namespace std;  typedef struct  {      int a,b;      double c;  } nc;  nc t[201];  int n,m,i;  bool cmp(nc a1,nc a2)  {      if (fabs(a1.c-a2.c)<0.00000001) return a1.a<a2.a;    else  return a1.c>a2.c;  }  int main()  {      scanf("%d%d",&n,&m);      for (i=1;i<=n;i++) scanf("%d",&t[i].a);      for (i=1;i<=n;i++)       {          scanf("%d",&t[i].b);          t[i].c=t[i].a/(t[i].b*1.0);       }      sort(t+1,t+1+n,cmp);      int m1=0,m2=0;      for (i=1;i<=m;i++)       {          m1+=t[i].a;          m2+=t[i].b;       }      printf("%.3lf",m1/(m2*1.0));      return 0;        }  

100:

#include<cstdio>  using namespace std;  int n,m,i,j,k;double ma,ans1,ans2;bool b[205];  struct jgtt  {    double c,v;  }a[205];  int main()  {    scanf("%d%d",&n,&m);    for(i=1;i<=n;i++)    scanf("%lf",&a[i].v);    for(i=1;i<=n;i++)    scanf("%lf",&a[i].c);    ans1=0;ans2=0;    for(i=1;i<=m;i++)    {      ma=0;int ji;      for(j=1;j<=n;j++)      if(!b[j]&&((a[j].v+ans1)/(a[j].c+ans2))>ma)      {        ma=(a[j].v+ans1)/(a[j].c+ans2);        ji=j;      }      b[ji]=1;      ans1+=a[ji].v;      ans2+=a[ji].c;    }    printf("%0.3f",ans1/ans2);  }   


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 五十万存银行一年有多少利息 40万存银行一年利息多少 20万存定期三年利息 二十万存定期一年利息多少 20万存银行一年利息是多少 10万存3年定期利息是多少 100万存银行一个月利息多少 20万存余额宝一天收益多少 十万存一年定期利息是多少 十万存定期一年利息多少 10万存银行一年利息多少 一万存三个月利息多少 15万存银行一年利息多少 十万存余额宝一年收益多少 5万存银行一年利息多少 2018存款20万存3年利息会有多少 大额存单20万存一年有多少钱 10万存定期还是买理财 3万存银行一年利息多少 800万存银行一年利息多少 2万存银行一年利息多少 1000万存银行一年多少利息 一万存余额宝一天利息 三十万存银行一年利息多少 2018年20万存3年定期利息多少钱 5万存余额宝一天多少钱 20万存支付宝一天有多少利息 十万存三年定期利息是多少 20万存一年定期利息多少 学霸天师是网红 万学教育 千学万学学做真人 万学海文网校 万学教育集团海文考研 万学教育海文考研 万学教育海文考研网站 学远教育 向远学霸式恋爱 万宁市属于哪个市 万宁市特产 万宁市兴隆镇