链接: https://www.nowcoder.com/acm/contest/121/C
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

iko超级超级喜欢吃糖,有一天iko想出去玩,她计划从1点走到N点(按1,2,3,...,n的顺序走),每个点都有一个补给站,第i点的补给站有a[i]颗糖,从i点走到i+1点会消耗掉b[i]颗糖,iko在出游的途中可以选择三个补给站,iko想知道她走完全程到达N点时口袋里最多还能剩下几颗糖(初始时iko的口袋里一颗糖都没有)。

输入描述:

第一行输入N(3<=N<=1000)
第二行输入N个数代表a[1].......a[N]  (0<=a[i]<=1000 )
第三行输入N-1个数代表b[1]......b[N-1]  ( 1<=b[i]<=1000 )

输出描述:

输出一个数字表示iko到达n点时口袋里最多剩下的糖,
若不能到达N点输出-1。
示例1

输入

3
1 3 4
3 4

输出

-1

示例2

输入

5
3 4 5 2 4
3 2 2 2

输出

3

解法1:

深度优先搜索 dfs

void dfs(int index,int sum,int cnt)

当前处于第index个补给站,口袋里有sum颗糖,还可以选择cnt个补给站

初始时iko的口袋里一颗糖都没有,所以sum=0;

若sum<0,说明无法到达下一个补给站

若当前处于最后一个补给站,如果还有补给机会,肯定要补给,如果没有补给机会,则不补给

//dfs
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int a[maxn];//补给
int b[maxn];//消耗
int n;//点的个数
int max_sum;//最多还能剩下几颗糖
//index表示现在处于哪一个点,sum表示剩下几颗糖,可以选择cnt个补给站
void dfs(int index,int sum,int cnt)
{if(sum<0)return ;if(index==n){//如果还有剩余的补给机会,肯定要补给,这样才最多if(cnt>0&&sum+a[index]>max_sum)max_sum=sum+a[index];else if(cnt==0&&sum>max_sum)max_sum=sum;return ;}dfs(index+1,sum-b[index],cnt);//这一站不补给if(cnt>0)dfs(index+1,sum+a[index]-b[index],cnt-1);//这一站补给
}
int main()
{ios::sync_with_stdio(0);while(cin>>n){max_sum=-1;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<n;i++)cin>>b[i];dfs(1,0,3);//初始时iko的口袋里一颗糖都没有cout<<max_sum<<endl;
}return 0;
}

解法2:

贪心


#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int a[maxn];//补给
int b[maxn];//消耗
int n;//点的个数
int sum;//最多还能剩下几颗糖
int main()
{ios::sync_with_stdio(0);while(cin>>n){priority_queue<int> q;//每次取出最大int first;//第一个补给站int cnt=0;//补给次数cin>>first;q.push(first);//必须取第一个for(int i=1;i<n;i++)cin>>a[i];for(int i=1;i<n;i++)cin>>b[i];for(int i=1;i<n;i++){while(sum<b[i]&&!q.empty()){sum+=q.top();q.pop();cnt++;}sum-=b[i];if(sum<0){cnt=100;break;}q.push(a[i]);}while(!q.empty()&&cnt<3){sum+=q.top();q.pop();cnt++;}cout<<(cnt>3?-1:sum)<<endl;
}return 0;
}

陕西师范大学第七届程序设计竞赛 C题 iko和她的糖相关推荐

  1. 陕西师范大学第七届程序设计竞赛网络同步赛题解

    心累,昨天一天3个比赛,全部炸掉,这个陕西师范的比赛我真的读不懂题目,只搞出来7题,难受 A,B,F签到题,不讲了,只讲C,D,I,K 链接:https://www.nowcoder.com/acm/ ...

  2. 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】...

    链接:https://www.nowcoder.com/acm/contest/121/J 来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的 ...

  3. 哈尔滨理工大学第七届程序设计竞赛初赛 题集

    1. 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 这是mengxiang000和Tabri ...

  4. 次短路问题(陕西师范大学第九届ACM程序设计竞赛-F 新冠病毒要回家)

    求到顶点v的次短路时,有两种情况,要么是到其他某个顶点u的最短路再加上u->v的边,要么是到某个顶点u的次短路再加上u->v的边. 一般我们用Dijkstra求得最短路(无负权边),由此我 ...

  5. 哈尔滨理工大学第12届程序设计竞赛--ADK题

    A割韭菜--线段树 题目链接: A-割韭菜_哈尔滨理工大学第12届程序设计竞赛(同步赛) (nowcoder.com) #include <bits/stdc++.h>using name ...

  6. 哈尔滨理工大学第七届程序设计竞赛初赛(低年级组)

    水题就不做讲解了~~~~~: A 蓝廋.香菇 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 ...

  7. 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)G - 幼儿园战争...

    题目描述 幼儿园的孩子们正在做游戏,每个人都有自己的帮派,帮派之间打架,然后赢者吞并弱者扩大自己的势力.最开始每个孩子的帮派中只有自己,然后接下来有会有两个人打架,这两个人会集结自己所属的势力开始打架 ...

  8. 哈尔滨理工大学第七届程序设计竞赛初赛(高年级组)题解

    比赛链接:https://www.nowcoder.com/acm/contest/27#question A: 小Z的体型实在是太胖了,每次和小D一起出门都跟不上小D的脚步,这让小Z很气馁,于是小Z ...

  9. 哈尔滨理工大学第七届程序设计竞赛初赛(高年级组)F 苦逼的单身狗【DP】

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 双11又到了,小Z依然只是一只单身狗,对此他是 ...

最新文章

  1. php 限制登陆设备,登陆界面限制到只允许一台机器在线-PHP教程,PHP应用
  2. 阿里设计师出品!B端产品文案指南
  3. linux 安装sysstat使用iostat、mpstat、sar、sa
  4. 自定义的注解校验器的实现
  5. 一个基于 SpringBoot 开源的小说和漫画在线阅读网站,简洁大方、强烈推荐
  6. 浅谈vue —— 生命周期
  7. sql: table,view,function, procedure created MS_Description in sql server
  8. JavaScript的for of语法遍历数组元素
  9. 苹果电脑上四款好用的可以记事的日历软件
  10. deglitch 技术_fdc2214中文资料-技术参考.pdf
  11. 夜光带你走进Jquery(十三)擅长的领域
  12. 介绍一下什么是静态独享代理ip。
  13. router.php,CodeIgniter源码分析[5]——路由类Router.php
  14. 木叶村第一次全村人民代表大会
  15. ls200_铁三角 LS200 双动铁入耳式耳机 个人客观听感(附IM02听感对比)
  16. 金融风控-贷款违约预测
  17. C++ accumulate
  18. 大战AV终结者(一)……AV简介
  19. 遇到的奇葩问题和解决方法
  20. 富士施乐248b粉盒清零_打印机DocuPrintM228B如何清零

热门文章

  1. Noip 2013 练习
  2. MERGE语句——数据集横向合并
  3. 【翻译】关于vertical-align所有你需要知道的
  4. linux虚拟文件系统vfs
  5. Android UI开发第三十三篇——Navigation Drawer For Android API 7
  6. 嵌入式系统 Contiki 代码移至 Github
  7. [SPOJ] 1043 Can you answer these queries I [GSS1]
  8. OPPO尝鲜android版本更新,安卓11迎来四大贴心升级,OPPO小米率先尝鲜
  9. python按日期排序_python按修改时间顺序排列文件的实例代码
  10. linux搭建环境经验,经验总结54--搭建linux虚拟机环境