【发布时间】:2021-03-29 23:08:02
【问题描述】:
我想降低这个程序的复杂性,但我不知道怎么做。
程序:
你正在举办一个活动,你需要钱。每个参与的人都会将其工资的百分比用于活动,但每个人都必须提供相同的百分比。例如,如果您选择的百分比是 30%,而 P 只愿意付出 20%,那么 P 不会给予任何东西。如果你选择了 30%,而 P 愿意给 80%,那么 P 只会给 30%。你想弄清楚你能赚到最多钱的百分比是多少。
输入是:
第一行:参与人数 (n)
下 n 行:第 i 个人的工资,第 i 个人愿意放弃的工资的最大百分比输出:
第一行:您可以为该活动获得的最大金额。例子:
输入:
4 100001 83.2 40001 20 90001 77.32 300001 1.88输出:
146909.5464程序选择了能带来最多钱的百分比是77.32,并写道你可以从这个百分比中得到的钱是(100001+90001)*77.32
#include <iostream>
#include <iomanip>
using namespace std;
int N,A[200000];
double P[200000],suma,maxsuma;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>N;
for(int i=0;i<N;i++){
cin>>A[i]>>P[i];
}
for(int i=0;i<N;i++){
suma=0;
for(int j=0;j<N;j++){
if(P[j]>=P[i]){
suma+=P[i]*A[j]/100.0;
}
}
maxsuma=max(suma,maxsuma);
}
cout<<fixed<<setprecision(20)<<maxsuma;
}
【问题讨论】:
-
到目前为止你尝试了什么?
-
@Dr.Watson 这是我唯一能想到的,但我在下面得到了答案。
标签: c++ algorithm time-complexity