【贪心】【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); }
- 【贪心】【01规划】luogu 1570 KC喝咖啡
- 重新开始喝咖啡
- 咖啡喝多了
- 喝咖啡的礼仪
- 重喝咖啡
- 不得不喝的咖啡
- 喝咖啡也能醉
- 喝咖啡的好处
- 喝茶还是喝咖啡?
- Codevs 喝咖啡
- 喝咖啡的好处
- 喝咖啡好吗?(一)
- 喝咖啡好吗?(二)
- 喝咖啡好吗?(三)
- 各国咖啡的喝法
- 早上喝咖啡的感悟
- 喝咖啡的三篇文章
- 【面试-概率】喝茶,喝咖啡
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- S3C2440-GPIO
- 汽车电子软件开发相关标准
- 第七周上机实践项目
- 感知世界 体味教学——AYC教学培训紧锣密鼓地展开
- 【贪心】【01规划】luogu 1570 KC喝咖啡
- 算法习题7:下排每个数都是先前上排那十个数在下排出现的次数
- struts2 标签的使用之二 s:iterator
- java字符串池和字符串堆内存分配
- SVI接口 (交换机虚拟接口)
- HDU 1205 吃糖果
- 指出一些常见的谎言与谬误
- android开发The method setOnClickListener(View.OnClickListener) in the type View is not错误
- 双向链表的C++实现