柯浩泽
(柯浩泽)
1
6. 独孤大虾学武功
题目ID:9846必做题100分
订正得分
赛中得分
最新提交:
Wrong Answer
0 分
历史最高:
Wrong Answer
20 分
时间限制: 1000ms
空间限制: 262144kB
题目描述
题目描述
独孤大虾走进了放满武功秘籍的秘境。秘境里面有 N(N≤100) 本秘籍,第 i 本秘籍的重量和武力提升值分别是 mi,vi(1≤mi,vi≤100)。独孤大虾有一个承重量为 T(T≤1000) 的背包,但并不一定有办法将全部的秘籍都装进去。他想提升尽可能多的武力值。所有秘籍都可以把单个动作招式拆分,拆分完的秘籍重量武力比(也就是单位武力值)不变。请问独孤大虾最多可以提升多少武力值?
输入格式
第一行两个整数 N,T。
接下来 N 行,每行两个整数 mi,vi。
输出格式
一个实数表示答案,输出两位小数
毛思源
(下弦一 教主蓝慈)
2
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,t;
cin>>n>>t;
int m[1000],v[1000];
double p[1000],sum=0;
for(int i=1;i<=n;i++){
cin>>m[i]>>v[i];
p[i]=v[i]*1.0/m[i];
}
for(int i=1;i<=n;i++){
int index=i;
for(int j=i+1;j<=n;j++){
if(p[index]<p[j]){
index=j;
}
}
if(index!=i){
swap(m[i],m[index]);
swap(v[i],v[index]);
swap(p[i],p[index]);
}
}
for(int i=1;i<=n;i++){
if(t>m[i]){
sum+=v[i];
t-=m[i];
}else{
sum+=(t*p[i]);
break;
}
}
printf("%.2lf",sum);
return 0;
}
1 个赞