因为这两题相似,把它们放在一个博客里面发了
陶陶摘苹果(升级版)
题目描述
又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次他有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。
这次与 NOIp2005 普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s了。当然,每次摘苹果时都要用一定的力气。陶陶想知道在 s<0 之前最多能摘到多少个苹果。
现在已知n个苹果到达地上的高度x_i,椅子的高度a,陶陶手伸直的最大长度 b,陶陶所剩的力气 s,陶陶摘一个苹果需要的力气 y_i,求陶陶最多能摘到多少个苹果。
输入格式
第1行:两个数 苹果数n,力气s。
第2行:两个数 椅子的高度 a,陶陶手伸直的最大长度b。
第3行~第3+n-1行:每行两个数 苹果高度x_i,摘这个苹果需要的力气 y_i。
输出格式
只有一个整数,表示陶陶最多能摘到的苹果数。
样例 #1
样例输入
8 15
20 130
120 3
150 2
110 7
180 1
50 8
200 0
140 3
120 2
样例输出
4提示
对于 100% 的数据,n<=5000, a <=50, b<=200, s<= 1000, x_i<= 280, y_i<= 100。
代码区:
#include<stdio.h>
#include<stdlib.h>
struct APPLE{
int x;
int y;
};
int cmp(const void *a,const void *b){
struct APPLE *applea=(struct APPLE*)a;
struct APPLE *appleb=(struct APPLE*)b;
return applea->y-appleb->y;//按照花费力气的升序排序
}
int main(){
int n,s,a,b;
scanf("%d%d\n%d%d",&n,&s,&a,&b);
int height=a+b;
struct APPLE apple[n];
for(int i=0;i<n;i++){
scanf("%d %d",&apple[i].x,&apple[i].y);
}
qsort(apple,n,sizeof(struct APPLE),cmp);
int ans=0;
for(int i=0;i<n;i++){
if(apple[i].x<=height&&(s-apple[i].y)>=0){//能够的着苹果而且还有力气的话就能摘到苹果
s-=apple[i].y;
ans++;
}
}
printf("%d",ans);
return 0;
}
排队接水
题目描述
有n个人在一个水龙头前排队接水,假如每个人接水的时间为 T_i,请编程找出这 n个人排队的一种顺序,使得n个人的平均等待时间最小。
输入格式
第一行为一个整数n。
第二行n个整数,第 i个整数 T_i表示第$i个人的接水时间 T_i。
输出格式
输出文件有两行,第一行为一种平均时间最短的排队顺序;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。
样例 #1
样例输入
10
56 12 1 99 1000 234 33 55 99 812
样例输出
3 2 7 8 1 4 9 6 10 5
291.90
提示
1<= n <= 1000,1<=t_i <=10^6,不保证 t_i不重复。
代码区:
#include<stdio.h>
#include<stdlib.h>
struct WATER{
int t;//时间
int number;//序号
};
int cmp(const void *a,const void *b){
struct WATER *watera=(struct WATER*)a;
struct WATER *waterb=(struct WATER*)b;
return (watera->t-waterb->t);//对时间进行升序排列
}
int main(){
int n;
scanf("%d",&n);
struct WATER time[n];
int wait[n];//每个人要等的时间
for(int i=0;i<n;i++){
wait[i]=0;
}
for(int i=0;i<n;i++){
scanf("%d",&time[i].t);
time[i].number=i+1;
}
double ans=0.0;
qsort(time,n,sizeof(struct WATER),cmp);
for(int i=0;i<n;i++){ //统计每个人要等待的时间
for(int j=0;j<i;j++){
wait[i]+=time[j].t;
}
ans+=wait[i];
}
for(int i=0;i<n;i++){
printf("%d ",time[i].number);
}
printf("\n");
printf("%.2lf",ans/n);
return 0;
}
欢迎各位读者提出意见。
(菜菜洛谷奋斗小日记)
标签:洛谷,struct,int,P1478,样例,WATER,P1223,陶陶,苹果 From: https://blog.csdn.net/2402_88149600/article/details/144067868