题目链接

Problem Description

世界杯结束了,意大利人连本带利的收回了法国人6年前欠他们的债,捧起了大力神杯,成就了4星意大利.

世界杯虽然结束了,但是这界世界杯给我们还是留下许多值得回忆的东西.比如我们听到了黄名嘴的3分钟激情解说,我们懂得了原来可以向同一个人出示3张黄牌,我们还看到了齐达内的头不仅能顶球还能顶人…………

介于有这么多的精彩,xhd决定重温德国世界杯,当然只是去各个承办世界杯比赛的城市走走看看.但是这需要一大比钱,幸运的是xhd对世界杯的热爱之情打动了德国世界杯组委会,他们将提供xhd在中国杭州和德国任意世界杯承办城市的往返机票,并说服了这些城市在xhd到达这座城市时为他提供一笔生活费以便他在那里参观时用,当参观完时剩余的钱也将留给xhd,但当生活费不够时他们将强行结束xhd的这次德国之行,除了这个,他们还有一个条件,xhd只能根据他们所给的路线参观.比如有3座城市a,b,c,他们给定了a-b-c-a的路线,那么xhd只有3种参观顺序abc,bca,cab.由于各个城市所提供的生活费和在那里的花费都不同,这使xhd很头痛,还好我们事先知道了这笔生活费和花费.请问xhd最多能顺利参观几座城市?

Input

每组输入数据分两行,第一行是一个正整数n(1<=n<=100000),表示有n座城市.接下来的一行按照给定的路线顺序的输出这n个城市的生活费和花费,w1,l1,w2,l2,……,wn,ln,其中wi,li分别表示第i个城市的生活费和花费,并且它们都是正整数.

Output

对应每组数据输出最多能参观的城市数.

Sample Input

3
3 2 3 4 2 2
3
3 2 3 4 2 3

Sample Output

3
2

分析:

初看觉得题难的,仔细分析,每次上次有省的钱的都可以放到这次来用,那么生活费减去真实费用构成了一个序列,那么只要这个序列的和满足不小于0就可以了,这样就转化成求连续和不小于0的最长序列,注意一点:可以循环,城市之间相当于形成了一个环,那么只要开两倍的数组这样就可以构成循环。最后注意一下如果最后的长度大于城市总数要处理一下,那这时候的结果就是城市的个数。

dp[i]表示以i为结尾的方案能走到的城市数

代码:

#include <stdio.h>
#define MAX 200002
int n;
int city[MAX];
int MaxNumOfCity()
{int i, money, max1, nCity;money = -1;max1 = 0;for (i = 0; i < 2 * n; i++){if (money < 0){money = 0;nCity = 0;}else{nCity++;if (nCity > max1){max1= nCity;if (max1 >= n)return n;}}money += city[i];}return max1;
}int main()
{while (scanf("%d", &n) != EOF){int w,l,i;for (i = 0; i < n; i++){scanf("%d%d", &w, &l);city[i] = w - l;city[i + n] = city[i];}printf("%d\n", MaxNumOfCity());}return 0;
}

转载于:https://www.cnblogs.com/cmmdc/p/6766760.html

HDU 1422 重温世界杯 (dp)相关推荐

  1. HDU 1422 重温世界杯 环形序列的最长非负连续子序列

    重温世界杯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  2. HDU 1422 重温世界杯 【C++练习题】

    重温世界杯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  3. 杭电1422 重温世界杯

    重温世界杯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. 重温世界杯(简单的动态规划)(C-3)

    重温世界杯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  5. HDU 2196 Computer 树形DP经典题

    链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...

  6. HDU 2084 数塔 DP

    http://acm.hdu.edu.cn/showproblem.php?pid=2084 题目: 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走 ...

  7. HDU 1712 裸分组dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1712 N门课M天复习,第i门课花费j天获得的效益是dp[i][j] 求最大效益 分组背包,同一门课不能选两次 三 ...

  8. HDU 4628 Pieces(DP + 状态压缩)

    Pieces 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4628 题目大意:给定一个字符串s,如果子序列中有回文,可以一步删除掉它,求把整个序列删除 ...

  9. hdu 4640(状压dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 思路:f[i][j]表示一个人状态i下走到j的最小花费,dp[i][j]表示i个人在状态j下的最 ...

最新文章

  1. 微信AI全面放开NLP能力
  2. 如何在Oracle上使用AUTO_INCREMENT创建ID?
  3. 一条数据的漫游奇遇记
  4. PHP中substr截取中文乱码解决方案
  5. mybatis log4j 在日志中打印sql_MyBatis---gt;01总结
  6. spring中的IOC和AOP
  7. 【数据结构与算法】【算法思想】位图
  8. Golang实践录:使用gin框架实现转发功能:管理后端服务
  9. 英语总结系列(八):回顾八月展望九月
  10. jquery显示隐藏切换_jQuery显示,隐藏,切换
  11. 如何在史上最糟糕的里约奥运会中活下去?(内附奥运赛事时间表)
  12. 利用不共线三点求解并联机构动系在定系中的位姿的另一种解法
  13. GDAL坐标转换六参的使用方法
  14. Delphi FireDAC SQLite “database is locked“ 解决办法
  15. des加密 lua_lua des加密解密 各种加密解密函数 - 奇闻 - 91文库
  16. Linux电脑怎么接入arm开发板,PC机与ARM开发板之间实现NFS共享
  17. 2019东北四省 B. Balanced Diet
  18. 服务器技术的发展方向
  19. V831基础-切换屏幕
  20. 计算机控制 英文 论文,计算机论文英文翻译

热门文章

  1. SpringBoot2.x 中配置拦截器
  2. python进阶10并发之六并行化改造
  3. 指定jupyter运行的conda环境和报错处理generator_to_async_generator
  4. linux软raid 系统坏了,LINUX下软RAID的制造及如何查看坏盘?
  5. 从数据平台到报表开发,我靠这个零代码报表工具,转行后月薪3W
  6. 快、准、狠!秒杀Excel的报表工具,十分钟教你做好数据填报
  7. leetcode hot 3-4
  8. iview兼容ie8_iview在ie9及以上的兼容问题解决方案__Vue.js__JavaScript__前端__iView
  9. linux文件描述符有什么用,linux上的文件描述符3有什么特别之处?
  10. python南开大学王凯_王凯:长大后我也成了你