洛谷 P1478 陶陶摘苹果(升级版)
来源:互联网 发布:lol 新手 知乎 编辑:程序博客网 时间:2024/05/21 09:15
1. Problem Description
又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次她有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。
这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s了。当然,每次摘苹果时都要用一定的力气。陶陶想知道在s<0之前最多能摘到多少个苹果。
现在已知n个苹果到达地上的高度xi,椅子的高度a,陶陶手伸直的最大长度b,陶陶所剩的力气s,陶陶摘一个苹果需要的力气yi,求陶陶最多能摘到多少个苹果。
2. Input
第1行:两个数 苹果数n,力气s。
第2行:两个数 椅子的高度a,陶陶手伸直的最大长度b。
第3行~第3+n-1行:每行两个数 苹果高度xi,摘这个苹果需要的力气yi。
3. Output
只有一个整数,表示陶陶最多能摘到的苹果数。
输入样例#1:
8 15
20 130
120 3
150 2
110 7
180 1
50 8
200 0
140 3
120 2
输出样例#1:
4
4. 详解
思路:这题可以用贪心 以用力气最小的排序就OK
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;const int M=23333;struct node{//结构体 int l; int y;}a[M];int n,s,b,m,sum;bool cmp(node a,node b){//比较函数 if(a.y<b.y)return true; return false;}void qsort(int l,int h){//快排 int i=l,j=h; node mid=a[(l+h)/2]; while(i<=j){ while(cmp(a[i],mid))i++; while(cmp(mid,a[j]))j--; if(i<=j){ swap(a[i],a[j]); i++;j--; } } if(i<h)qsort(i,h); if(l<j)qsort(l,j);}void init(){ cin>>n>>s>>m>>b; for(int i=1;i<=n;i++){ scanf("%d%d",&a[i].l,&a[i].y); } qsort(1,n);/* for(int i=1;i<=n;i++){ cout<<a[i].l<<" "<<a[i].y<<endl; }*/}void solve(){ m+=b; for(int i=1;i<=n;i++){ if(s-a[i].y<0)break; else if(m>=a[i].l){ sum++; s-=a[i].y; } else continue; }}void out(){ cout<<sum;}int main(){ //freopen("P1478.in","r",stdin); init(); solve(); out(); //fclose(stdin); return 0;}
0 0
- 洛谷P1478 陶陶摘苹果升级版
- P1478 陶陶摘苹果(升级版)
- P1478 陶陶摘苹果(升级版)
- |洛谷|贪心|P1478 陶陶摘苹果(升级版)
- 洛谷 P1478 陶陶摘苹果(升级版)
- 【模拟】洛谷 P1478 陶陶摘苹果(升级版)
- 洛谷P1478 陶陶摘苹果(升级版,dp)
- luogu【P1478】陶陶摘苹果(升级版)
- luogu P1478 陶陶摘苹果(升级版)
- <NOIP> 26 . P1478 陶陶摘苹果(升级版)
- 洛谷1478陶陶摘苹果升级版
- 陶陶摘苹果(升级版)
- 陶陶摘苹果(升级版)
- 洛谷1478 陶陶摘苹果(升级版)
- 洛谷题解--陶陶摘苹果(升级)
- 新手村 Boss战-入门综合练习1 陶陶摘苹果(升级版)
- 洛谷1046 陶陶摘苹果
- 洛谷P1046 陶陶摘苹果
- Android病毒样本分析(1)
- win7 64位系统使用VS2013编写MySQL代码
- 搬家啦
- ZSTUOJ 4269 买iphone【思维】
- Java
- 洛谷 P1478 陶陶摘苹果(升级版)
- ORACLE 的用户与角色学习笔记
- 李白打酒
- XZ压缩最新压缩率之王
- 正则表达式
- grep, egrep, fgrep的man帮助手册
- 论文打乱最佳原则
- spark map flatMap flatMapToPair mapPartitions 的区别和用途
- linux 查看和设置主机名