首页 > 代码库 > HDU 1422 重温世界杯
HDU 1422 重温世界杯
题目中说只需按照所给顺序,不论起点,输出能连续旅游的最多的城市
就是不论起点这句,我就卡住了。。
看了别人的题解,循环个2n-1次便是把所有的起点都考虑进去了。
更详细的解释在代码的注释里。
1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 7 const int maxn = 100000 + 10; 8 int city[maxn]; 9 10 int main(void)11 {12 #ifdef LOCAL13 freopen("1422in.txt", "r", stdin);14 #endif15 16 int i, n, a, b, cnt, Max, sum;17 while(scanf("%d", &n) == 1)18 {19 for(i = 0; i < n; ++i)20 {21 scanf("%d%d", &a ,&b);22 city[i] = a - b;23 }24 sum = cnt = 0;25 Max = -1;26 for(i = 0; i < n*2-1; ++i)27 {28 sum += city[i%n];29 if(sum >= 0)30 {31 ++cnt;32 if(Max < cnt)33 Max = cnt; //更新Max的值 34 if(Max == n) //最多把n个城市旅游个遍 35 break;36 }37 else38 cnt = sum = 0; //生活费不够了只能将所游览的城市的个数39 //和总生活费归为零 40 }41 printf("%d\n", Max);42 }43 return 0;44 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。