洛谷P1223——贪心

简单贪心,用结构体即可,但是第一个代码AC不了。。。

(好了发现了,我是SB),有个10应该写成n

这下AC了

#include<bits/stdc++.h>
using namespace std;
struct Node{
	int m;
	int t;
}a[1001];
bool cmp(Node a,Node b){
	return a.t<b.t;
}


int main(){
	
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].t;
		a[i].m=i;
	}
	sort(a+1,a+n+1,cmp);
	double sum=0;
	double average=0;
	for(int i=1;i<=n;i++){
		
		sum+=a[i].t*(n-i); 
	}
	
	average=sum/n;
	for(int i=1;i<=n;i++){
		printf("%d ",a[i].m);
	}
	cout<<endl;
	printf("%.2lf\n",average);
	
	return 0;
}

第二个代码抄别人的,AC了。。。

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct AC{//(本人爱好QAQ)
    int a;
    int b;
};
AC f[1005];
bool cmp(const AC&i,const AC&j){//重要cmp(其实本题挺好写)
    if(i.b<j.b)return 1;
    else return 0;
}
int main(){//主程序开始
    int n;
    cin>>n;//读入
    for(int i=1;i<=n;i++){
        cin>>f[i].b;//读入
        f[i].a=i;//存入序号
    }
    sort(f+1,f+1+n,cmp);//直接快排
    for(int i=1;i<=n;i++){
        printf("%d ",f[i].a);//输出序号
}
printf("\n");//换行
double ans;
for(int i=1;i<=n;i++){
   ans+=f[i].b*(n-i);//计算总值,套用多次实践所得的公式QAQ
}
printf("%.2f\n",ans/n);//直接输出平均值
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值