HDOJ1009
来源:互联网 发布:非凡软件站安全吗 编辑:程序博客网 时间:2024/06/05 13:28
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<string.h>
#define inf 0x3f3f3f
using namespace std;
int f[100000],j[100000],x,n,m;
bool vis[100000];
double ans,maxx,b[100000];
int pattion(int p,int r,double a[])
{
int y,z,ex2;
double x,ex1;
x = a[p];
y = p-1;
z = r+1;
while(1)
{
y++;
while(a[y] < x)
y++;
z--;
while(a[z] > x)
z--;
if(y < z)
{
ex1 = a[y];
a[y] = a[z];
a[z] = ex1;
ex2 = f[y];
f[y] = f[z];
f[z] = ex2;
ex2 = j[y];
j[y] = j[z];
j[z] = ex2;
}
else return z;
}
}
void quicksort(int p,int r,double a[])
{
int q;
if(p < r)
{
q = pattion(p,r,a);
quicksort(p,q,a);
quicksort(q+1,r,a);
}
}
int main()
{
while(scanf("%d%d",&m,&n) && m != -1)
{
for(int i = 1 ; i <= n ; i++)
{
scanf("%d%d",&f[i],&j[i]);
b[i] = 1.0*f[i]/j[i];
}
quicksort(1,n,b);
ans = 0;
for(int i = n ; i >= 1 ; i--)
{
if(m >= j[i])
{
ans = ans + f[i];
m -= j[i];
}
else
{
ans += 1.0*m*f[i]/j[i];
break;
}
}
printf("%.3lf\n",ans);
}
}
部分背包问题,所以可以贪心处理,第一次超时了,后来用了快排先排序F[i]/J[i],从大到小找,酱紫就OK了
- HDOJ1009
- hdoj1009
- hdoj1009
- hdoj1009
- HDOJ1009
- HDOJ1009
- HDOJ1009
- hdoj1009 贪心
- HDOJ1009 贪心
- hdoj1009解题报告
- HDOJ1009.FatMouse' Trade
- FatMouse' Trade<hdoj1009>
- Hdoj1009 FatMouse' Trade
- HDOJ1009 贪心水题
- hdoj1009 今年暑假不AC
- HDOJ1009 肥鼠的交易
- zoj 2109 || hdoj1009 FatMouse' Trade(贪心)
- hdoj1009 FatMouse' Trade——贪心算法
- DOM点击的文本框背景为黄色其他的为白色
- 十八、后台执行命令
- 决定于未来研发与赢利能力,Unix蛋糕还有多大?
- Android开发之错误解决办法
- HDU 纸牌木板
- HDOJ1009
- android软键盘的一些控制
- 新浪公司总裁兼首席执行官 曹国伟
- thinking in java(III)--initialization and cleanup
- [usaco]4.3.1 最长递减子序列 和超级整型数
- 零和无穷
- RIAPlayer播放器不能用的问题解决
- 骑士聚会问题
- 为什么中国的程序员技术偏低