怎么做111

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​。

输出格式

一个实数表示答案,输出两位小数

#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 个赞

你应该是语法,这是算法

1 个赞

Ac代码会被禁的

厉害

这都是对的

你是我们班的?

不能直接发AC代码

对不起,忘了…