摘桃子

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. 区分什么是Apache、Tomcat,之间有什么关系?
  2. matlab gcc4.7,关于gcc-4.7.2 cannot compute suffix of object fil...
  3. Java程序员从笨鸟到菜鸟之(七十九)细谈Spring(八)spring+hibernate整合基本详解
  4. serializable接口_Java Serializable:明明就一个空的接口嘛
  5. 设置电脑背景颜色为保护眼睛的颜色
  6. pandas添加一行数据_恨晚,Python探索性数据分析神器pandas-profiling,一行代码搞定...
  7. 技术分享连载(二十七)
  8. java 环境 搭建
  9. jQuery ajax 文件上传携带附加参数
  10. java easyui样式_[EasyUI美化换肤]更换EasyUi图标
  11. [线性相关] 皮尔森相关系数的计算及假设检验
  12. 第二工业大学计算机应用大专录取分,二工大|2019年上海第二工业大学专科层次依法自主招生各专业最低录取分数线...
  13. 【零基础】MT4量化入门三:写一个双均线指标
  14. 图像去雾算法(二)基于暗通道先验算法学习笔记
  15. 《转》关于ath5k网卡驱动中beacon的发送过程(特别是timestamp字段)
  16. 【Meetup讲师】您有一张社区认证讲师证书未领取,点击领取!
  17. IT技术人员的六大方向
  18. HTML全部标签简介
  19. 微信小程序联系客服对接网易七鱼
  20. 2021年中国互联网婚恋交友行业现状与竞争格局分析,预计到2022年市场规模将有望突破80亿元「图」

热门文章

  1. 深度学习计算机视觉发展简述
  2. 文字,Logo到模型制作详解
  3. C语言经典实例005:计算正方形的周长
  4. 2021年中国彩涂铝材行业现状及发展驱动力分析,未来市场空间广阔「图」
  5. 九阴白骨爪(1)修改APT源为国内源的懒人法
  6. Invalid keystore format
  7. SecureCRT VBS脚本/自动按回车键
  8. 数据结构与算法基础(青岛大学-王卓)(1)
  9. 格林威治时间(时间戳)转换成标准时间
  10. Redhat Linux创建本地YUM源