第十五周第三次总结

任务描述

题目描述:编程模拟跳水比赛的评分系统。共有5位选手参与比赛。规则如下:共有7名评委对每位选手打分,去掉最高分和最低分,并计算其他5个评委的总分作为选手的成绩。要求定义结构体存储选手的姓名、编号、国籍,以及所有7位评委的评分以及最后的评分等信息,然后输出第一名、第二名、第三名选手的姓名、编号、代表队、国籍、以及最后得分。

相关知识(略)

编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充。 输入 5位参赛选手的姓名、编号、国籍,以及所有7位评委的评分 输出 第一名、第二名、第三名选手的姓名、编号、代表队、国籍、以及最后得分

样例输入:

施延懋

001

中国

9.7 9.8 9.6 9.7 9.8 9.9 9.6

王涵

002

中国

9.7 9.8 9.6 9.6 9.5 9.8 9.7

陈芋汐

003

中国

9.6 9.6 9.5 9.7 9.5 9.6 9.6

全红婵

004

中国

9.9 10 9.8 9.9 9.9 10 10

张家齐

005

中国

9.7 9.6 9.6 9.7 9.5 9.8 9.7

样例输出:

全红婵,004,中国,49.70

施延懋,001,中国,48.60

王涵,002,中国,48.40

这个是帮我朋友写的逆天题,整了一早上

#include<stdio.h> 
float grade[5][7];
float sum[5],SUM[5];
struct arr{
	char name[120];
	int number;
	char nationality[100];
	
}player[5]; 
void abc()
{
	for(int i=0;i<4;i++)
	for(int j=0;j<4-i;j++)
	if(sum[j]<sum[j+1])
	{
		float t=sum[j];
		sum[j]=sum[j+1];
		sum[j+1]=t;
	}
//	for(int i=0;i<5;i++)
//	printf("%.2f ",sum[i]);
}
int main()
{
	for(int i=0;i<5;i++)
	{
		scanf("%s",&player[i].name);
		scanf("%d",&player[i].number);
		scanf("%s",&player[i].nationality);
		for(int j=0;j<7;j++)
		scanf("%f",&grade[i][j]);
	}
//	printf("\n");
//	for(int i=0;i<5;i++)
//	{
//		printf("%s\n",player[i].name);
//		printf("00%d\n",player[i].number);
//		printf("%s\n",player[i].nationality);
//		for(int j=0;j<7;j++)
//		printf("%.1f ",grade[i][j]);
//		printf("\n");
//	}
//	printf("\n");
	for(int i=0;i<5;i++)
	{
		float max=grade[i][0],min=grade[i][0];
		for(int j=0;j<7;j++)
		{
		if(grade[i][j]>max)
		max=grade[i][j];
		if(grade[i][j]<min)
		min=grade[i][j];
		sum[i]+=grade[i][j];	
		}
		sum[i]-=max;
		sum[i]-=min;
	}
	for(int i=0;i<5;i++)
	SUM[i]=sum[i];
	abc();
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<5;j++)
		{
			if(sum[i]==SUM[j])
			{
			printf("%s,00%d,%s,%.2f\n",player[j].name,player[j].number,player[j].nationality,sum[i]);
			}
		}
	}
}

问题 G: 最少硬币问题

内存限制:128 MB时间限制:1.000 S

题目描述

设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。对任意钱数0≤m≤20001,设计一个用最少硬币找钱m的方法。

输入

输入的第一行中只有1 个整数给出n的值,第2 行起每行2 个数,分别是T[j]和Coins[j]。最后1 行是要找的钱数m。

输出

程序运行结束时,将计算出的最少硬币数输出。问题无解时输出-1。

样例输入 复制

3
1 3
2 3
5 3
18

样例输出 复制

5

提示

多组输入

来自 <http://www.jsuacm.cn/problem.php?cid=1698&pid=6>

#include<stdio.h>

int main()

{

int n;

while(scanf("%d",&n)!=-1)

{

int w[20010],c[20010],m,count=0;

for(int i=0;i<n;i++)

scanf("%d %d",&w[i],&c[i]);

scanf("%d",&m);

for(int i=0;i<n-1;i++)

for(int j=0;j<n-i-1;j++)

if(w[j]<w[j+1])

{

int t=w[j];

w[j]=w[j+1];

w[j+1]=t;

int T=c[j];

c[j]=c[j+1];

c[j+1]=T;

}

for(int i=0;i<n;i++)

for(int j=0;j<c[i];j++)

{

if(m>=w[i])

{

m-=w[i];

count++;

}

else

break;        

}

if(count==0)

printf("-1\n");

else

printf("%d\n",count);        

}                

}        

典型的贪心

问题 C: [USACO 1.3.1]混合牛奶

内存限制:64 MB时间限制:1.000 S

题目描述

牛奶包装是一个如此低利润的生意,所以尽可能低的控制初级产品(牛奶)的价格变的十分重要。请帮助快乐的牛奶制造者(Merry Milk Makers)以可能的最廉价的方式取得他们所需的牛奶。快乐的牛奶制造公司从一些农民那购买牛奶,每个农民卖给牛奶制造公司的价格不一定相同。而且,如一只母牛一天只能生产一定量的牛奶,农民每一天只有一定量的牛奶可以卖。每天,快乐的牛奶制造者从每个农民那购买一定量的牛奶,少于或等于农民所能提供的最大值。给出快乐牛奶制造者的每日的牛奶需求,连同每个农民的可提供的牛奶量和每加仑的价格,请计算快乐的牛奶制造者所要付出钱的最小值。注意: 每天农民生产的牛奶的总数对快乐的牛奶制造者来说足够的。

输入

第 1 行:二个整数, N 和 M。第一个数值,N,(0<= N<=2,000,000)是快乐的牛奶制造者的一天需要牛奶的数量。第二个数值,M,(0<= M<=5,000)是他们可能从农民那买到的数目。第 2 到 M+1 行:每行二个整数,Pi 和 Ai。 Pi(0<= Pi<=1,000) 是农民 i 牛奶的价格。 Ai(0 <= Ai <= 2,000,000)是农民 i 一天能卖给快乐的牛奶制造者的牛奶数量。

输出

单独的一行包含单独的一个整数,表示快乐的牛奶制造者拿到所需的牛奶所要的最小费用

样例输入 复制

100 5
5 20
9 40
3 10
8 80
6 30

样例输出 复制

630

#include<stdio.h>

struct milk{

int price;

int milk;

}arr[100000],tmep;

int main()

{

int n,m;

scanf("%d%d",&m,&n);

for(int i=0;i<n;i++)

scanf("%d %d",&arr[i].price,&arr[i].milk);

for(int i=0;i<n-1;i++)

for(int j=0;j<n-1-i;j++)

if(arr[j].price>arr[j+1].price)

{

tmep.price=arr[j].price;

tmep.milk=arr[j].milk;

arr[j].price=arr[j+1].price;

arr[j].milk=arr[j+1].milk;

arr[j+1].milk=tmep.milk;

arr[j+1].price=tmep.price;        

}

int sum=0,s=0;//sum为钱,s为买的量

for(int i=0;i<n;i++)

{

if(s+arr[i].milk<=m)

{

sum+=arr[i].price*arr[i].milk;

s+=arr[i].milk;        

}

else

{

sum+=(m-s)*arr[i].price;

printf("%d\n",sum);

return 0;        

}        

}

printf("%d\n",sum);

return 0;                        

}        

贪就对了

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值