求大佬分析一个不知道是否正确的思路
查看原帖
求大佬分析一个不知道是否正确的思路
1069663
Half_Two楼主2023/10/9 22:20

先将所有数按照题意以 viv_i 为分子 cic_i 为分母存储,并将所有分数通分(原分子分母我仍然存储了),再按照通分后分子的从大到小排序,此时排序后前 mm 个分数的分子的和除以分母的和是否就是所求的答案呢?

蒟蒻以此为思路写的代码只有 40pts40pts。 特求错误原因。

#include<iostream>
#include<algorithm>
#include<string.h>

using namespace std;



const int N=2e2+10;

struct ST{
    int son,ma;
    int yson,yma;
    bool operator<(const ST &W)
    {
        return son>W.son;
    }
}st[N];


int m,n;
int res=1;
int main()
{
    
    
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        st[i].yson=read();//原分子
    }
    
    for(int i=1;i<=n;i++)
    {
        st[i].yma=read();//原分母
        res*=st[i].yma; //res:通分后的分母
    }
    
    for(int i=1;i<=n;i++)
    {
        st[i].son=(st[i].yson)*(res/st[i].yma);
        st[i].ma=res;
    }
    
    sort(st+1,st+1+n);
    
    int up=0,down=0;
    
    for(int i=1;i<=m;i++)
    {
        up+=st[i].yson;
        down+=st[i].yma;
    }
    
    double ans=(double)(up)/(double)(down);
    
    
    printf("%.3lf\n",ans);
    
    return 0;
}
2023/10/9 22:20
加载中...