• 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 LOCAL
    13         freopen("1422in.txt", "r", stdin);
    14     #endif
    15 
    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             else
    38                 cnt = sum = 0;        //生活费不够了只能将所游览的城市的个数
    39                                     //和总生活费归为零 
    40         }
    41         printf("%d
    ", Max);
    42     }
    43     return 0;
    44 }
    代码君
  • 相关阅读:
    07月26日总结
    07月25日总结
    07月24日总结
    07月23日总结
    07月22日总结
    07月20日总结
    07月19日总结
    spinlock in c++11 based on atomic_flag std::memory_order_acquire
    c++ nullptr
    C++11 新特性: unordered_map 与 map 的对比
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/3866167.html
Copyright © 2020-2023  润新知