首页 > 其他分享 >洛谷P1478(洛谷P1223)

洛谷P1478(洛谷P1223)

时间:2024-11-26 21:05:43浏览次数:9  
标签:洛谷 struct int P1478 样例 WATER P1223 陶陶 苹果

因为这两题相似,把它们放在一个博客里面发了

陶陶摘苹果(升级版) - 洛谷

陶陶摘苹果(升级版)

题目描述

又是一年秋季时,陶陶家的苹果树结了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

相关文章

  • 洛谷P8833
    [传智杯#3决赛]课程-洛谷[传智杯#3决赛]课程题目背景disangan233喜欢数数,于是他想让你帮他回答一个问题。题目描述传智专修学院提供A,B两个课程,分别有n,m个学生报名。报名A的学生的编号为a_n,报名B 的学生的编号为b_m,求有多少个学生同时报名了两个课程。对......
  • 洛谷P1719 最大加权矩形 (最大子数组和 加强版)
    P1719最大加权矩形先给一个 n×n 矩阵,1<=n<=127。要求矩阵中最大加权矩形,即矩阵的每一个元素都有一权值,权值定义在整数集上。从中找一矩形,矩形大小无限制,是其中包含的所有元素的和最大。矩阵的每个元素属于 [-127,127],例如0–2–7092–62-41–41......
  • 【题解】洛谷P3674: 小清新人渣的本愿
    P3674小清新人渣的本愿自己想出来了,好耶!!其实和兔子洞那题差不多,标记哪些数区间中出现了,因为bitset就相当于状压,也是支持位运算的,所以减法相当于右移\(x\)位后与运算,如果有交说明可以得到\(x\),加法就要额外维护\(g=f_{N-i}\),查询时直接查找\(f\)与\(g\)右移\(N-x\)位......
  • 洛谷 P3524 [POI2011] IMP-Party 题解
    题意给定一个\(n\)个点的无向图,其中\(n\)是\(3\)的倍数。保证该图中含有一个\(\frac{2}{3}n\)个点的团。请你找出一个\(\frac{1}{3}n\)个点的团。\(1\leqn\leq3000\)。题解这种题想不出来是不是可以退役了团中任意两点间必有一条边。因此,如果\(u,v\)两点......
  • 做题随笔:洛谷 P11323
    Solution闲话蒟蒻第一次写题解,若有不当还请海涵。题意$n$类牌,每类$v_i$张,每次可出一张(单牌),同类的二张(对子),类A的三张和类B的一张(三带一),同类的四张(炸),求出完牌的最少出牌次数。分析逐类考虑:首先,某类牌多于4张时无脑炸不是最优(本蒟蒻在这里先死了10分钟),只要看一眼样例的例一不......
  • 【题解】洛谷P5911 :[POI2004] PRZ
    状压dp,先预处理出来所以状态的重量和时间,然后枚举集合,然后枚举子集,子集重量合法的话就可以转移,因为这题是多个集合组成最后的集合。枚举子集。https://oi-wiki.org/math/binary-set/#__tabbed_1_1#include<bits/stdc++.h>#defineintlonglong#definelsp<<1#definersp......
  • 洛谷 P1219 八皇后 DFS
    #include<bits/stdc++.h>usingnamespacestd;inta[14]={0};intb[14]={0};intc[28]={0};intd[28]={0};intn;vector<int>vc1;vector<vector<int>>vc2;set<string>st;voiddfs(intstep){ if(step==n+1) { vc2.push_back(vc1......
  • 【题解】洛谷P11311、P2943: 漫长的小纸带、Cleaning Up G
    赛时不会去想dp,感觉没法转移,然后去写了贪心,然后直接假掉唐完了。为什么贪心不能做,因为多个数的话还是可能被减,\(3\)个数长度为\(11\)就可以变成\(9\),非常划算,好像很显然,但是为什么我赛时写了只会有长度\(2\)的区间唐完了。考虑dp,设\(f_i\)表示\(1-i\)的最小代价,枚举......
  • 洛谷P1253 扶苏的问题(区间加值,区间修改,求区间max)
    题目Description给定一个长度为 nn 的序列 aa,要求支持如下三个操作:给定区间 [l,r][l,r],将区间内每个数都修改为 xx。给定区间 [l,r][l,r],将区间内每个数都加上 xx。给定区间 [l,r][l,r],求区间内的最大值。Input第一行是两个整数,依次表示序列的长度 nn 和操......
  • 洛谷P11290 【MX-S6-T2】「KDOI-11」飞船
    Problem本题开启SpecialJudge,无需考虑精度问题Solve一开始想到这个用DP写,但是不知道怎么定义去"提交记录"旁边的神秘按钮得知速度可以作为第二维,且类似于背包那么我们就可以按照背包列出定义前i个加油站,花费时间j......但是这里是求最小花费,所以我们要把类似于最大价......