摘桃子

Description

丹枫花园的果树成熟啦!

今年春天果农一共栽了 n 颗桃树,已知第 i 颗桃树将会在第 ai 天成熟 bi 颗又红油润的水蜜桃。但是因为天气炎热的缘故,水蜜桃太容易坏了,果实只有在刚成熟的当天(第 ai 天)和第二天(第 ai+1 天)才适合采摘,否则将会缩水,即使摘下来也不好吃了。

龙龙现在是丹枫花园的果农,但是他并没有特别地强壮,因此他每天的力气只够他采摘 v 颗桃子。这些摘下来的桃子既可以来自同一颗果树,也可以来自不同的果树。

但是龙龙太喜欢吃桃子了,因此他想摘尽可能多这样甜甜的水蜜桃来吃,聪明的你能告诉他这些天最多能摘下几颗桃子吗?

Input

第一行输入两个正整数 n、v 空格(1 ≤ n,v ≤ 3000),表示果树颗数和龙龙每天最多能采摘的桃子个数;

接下来 n 行,每行输入两个正整数,其中第 i 行输入 ai 和 bi(1 ≤ ai,bi ≤ 3000)表示第 i 颗果树有 bi 颗桃子,将在第 ai 天成熟

Output

输出一个正整数,表示龙龙这些天最多能摘下的桃子数量。

Hint

对于第一个样例,龙龙可以按这样的顺序摘桃子:

·第一天龙龙从第一颗果树上摘下 3 颗桃子,剩下的桃子已经不能摘了,因为每天最多只能摘 3 颗水蜜桃;
·第二天龙龙从第一颗果树上摘下 2 颗桃子,并从第二颗果树上摘下 1 颗桃子;
·第三天龙龙从第二颗果树上摘下剩余的 2 颗桃子;

到此龙龙总共摘得了8颗甜美的水蜜桃。

代码如下:

#include<stdio.h>
#include<stdlib.h>
//先摘隔夜的桃子,隔夜的如果可以摘完就再摘当天的,
//也需要考虑当天成熟的  int main()
{  int n,v,i,j,k,l,temp,temp1,left=0,sum=0,m,m1,m2;  scanf("%d %d",&n,&v);   int a[10000],b[10000];  for(i=0;i<n;i++)       //用两个数组存放成熟天数和最大摘桃数   {  scanf("%d",&a[i]);  scanf("%d",&b[i]);  }  for(j=1;j<=n-1;j++)  for(i=0;i<n-j;i++)  if(a[i]>a[i+1]) //按照从小到大给a数组的成熟天数排序   {  temp=a[i];temp1=b[i];  a[i]=a[i+1];b[i]=b[i+1];  a[i+1]=temp;b[i+1]=temp1;  }  for(k=1;k<=a[n-1]+1;k++)  {  for(l=0;l<n;l++)  {  if(a[l]==k||a[l]==k-1) m+=b[l];  }  if(k==1)  {  if(v>m)  //桃子剩余数和可摘桃子最大数作比较   {  sum+=m;  for(l=0;l<n;l++)  {  if(a[l]==1) b[l]=0;  //归零   }  }  else  {  sum+=v;  for(l=0;l<n;l++)  {  if(a[l]==1) b[l]-=v; //减去可摘的最大数的桃   }  }  }  else  {  if(v>m)  //桃子剩余数和可摘桃子最大数作比较   {  sum+=m;  for(l=0;l<n;l++)  {  if(a[l]==k||a[l]==k-1) b[l]=0; //归零   }  }  else  {  m=v;sum+=v;  for(l=0;l<n;l++)  {  if(a[l]==k-1&&b[l]-m<0)  {  m-=b[l];b[l]=0; //剩余桃子减去当天成熟数 归零   }  else if(a[l]==k-1&&b[l]-m>0)  {  b[l]-=m;break; //减去剩余桃子数   }  else if(a[l]==k)  {  b[l]-=m;m=0;  //减去剩余桃子数   }  }  }  }  m=0;  }   printf("%d\n",sum);
}

(程序设计方法与实践)摘桃子相关推荐

  1. C程序设计-方法与实践(清华大学出版社)习题解析

    1. 前言 本习题解析只是作为一种参考,代码不唯一! 补充:书本重要例题点击跳转 2. C语言概述 1)习题 2.3 编写程序,由键盘输入任意3个数,找出其中最小的数 #include <std ...

  2. 【第二十三题】带旋转的数独游戏|dfs(北理工/北京理工大学/程序设计方法与实践/小学期 )

    目录 ​ 前言 dfs学习 思路 代码修正 源代码 我修正后的代码 前言 说实话这题我弄的也不是很明白,而csdn上只有一份代码@loveumozart,还没多少注释,关键还有很多冗余代码,于是我就做 ...

  3. C程序设计方法与实践重要例题

    1. 前言 本章节只对本人不熟悉或者认为属于考试内容属于重点的进行收录 2. C语言概述 2.3 (38页)程序分析题-错误型 留意错误写法,2022年新增程序分析题 2.6 (40页) 思想很重要, ...

  4. (程序设计方法与实践)肥宅快乐串

    肥宅快乐串 Description 龙龙在研究字符串和字符串处理.龙龙发现有一些字符串让他第一眼看到就会发自内心的感到快乐,他把这些字符串称为"肥宅快乐串".龙龙进一步研究发现,一 ...

  5. 【第二十四题】逻辑闭环(北理工/北京理工大学/程序设计方法与实践/小学期 )

    目录 Description 思路 代码 Description 小张是一位推理迷,他非常喜欢看侦探小说与侦探电影.同时他也会玩一些推理游戏,在侦探游戏中,小张需要发掘事件之间的联系.通过一条线索,他 ...

  6. (程序设计方法与实践)拉练紧急集合

    拉练紧急集合 Description 军训是大学一门必修的课程.相信大家记忆最深刻的项目一定是"夜晚十公里拉练". 凌晨1点,警钟拉响,所有同学需要以最快的时间到达紧急集合点. 众 ...

  7. (程序设计方法与实践)达拉崩吧的酒宴

    达拉崩吧的酒宴 Description 很久很久以前,巨龙突然出现,带来灾难带走了公主又消失不见,王国十分危险,世间谁最勇敢,一位勇者赶来大声喊:"我要带上最好的剑,翻过最高的山,闯进最深的 ...

  8. (程序设计方法与实践)水晶球

    水晶球 Description 和许多同龄女孩子一样,久莲也喜欢水晶球. 还有 10 天,就是心心念念的他生日了. 久莲希望把全世界最大最好看的水晶球送给他. 她找到了宝石收藏家亚瑟斯,希望能够寻求他 ...

  9. (程序设计方法与实践)一夜发白《千字文》

    一夜发白<千字文> Background 在古代中国,<三字经>.<百家姓>.<千字文>被合称为三.百.千,都是非常重要的启蒙教育课本,广为流传.而其中 ...

最新文章

  1. MFC静态文本控件设置超链接
  2. android textview 常用属性id,Android TextView常用属性
  3. Android 判断当前屏幕是横屏还是竖屏
  4. haproxy调度web案例
  5. JVM:堆中对象的创建?定位?可达性?
  6. 数据结构与算法(Python)– 回溯法(Backtracking algorithm)
  7. redis维护问题总结
  8. html css 知识回顾2
  9. 关于动画的几种状态表示的含义以及能够使用2d动画表述为什么要使用3d动画表述
  10. 一个Linux下C线程池的实现(转)
  11. Skywalking-11:Skywalking查询协议——案例分析
  12. 微信小程序中处理 获取用户地址的回调
  13. [Java] 蓝桥杯 BASIC-3 基础练习 字母图形
  14. Oracle12C用户创建、授权、登录
  15. matlab空间球与空间圆求解,基于MATLAB的球管相贯空间曲线焊缝的数学模型
  16. pc电脑上浏览手机网站在线wap浏览器或模拟器软件
  17. 使用ffmpeg从视频中提取纯音频纯视频
  18. 安装操作系统找不到任何驱动器的解决方法
  19. 计算机控制作业来看,带PID控制器的最小拍系统设计
  20. 自动化构建工具Grunt、Gulp

热门文章

  1. 蓝桥杯万字攻略:算法模板大放送!-c++
  2. 关于颜色的英语谚语和习惯用法
  3. SRv6技术课堂:SRv6概述
  4. 基于Python的Prophet的大葱价格预测系统
  5. C# try、catch、finally含义
  6. 2022年11月总结
  7. 如何在音频分析中使用机器学习和深度学习
  8. Java_常用工具类收集
  9. systemverilog-static和automatic
  10. 20220614练习