zoukankan      html  css  js  c++  java
  • HDU 1422 重温世界杯(DP)

    点我看题目

    题意 : 中文题不详述。

    思路 : 根据题目描述及样例可以看出来,如果你第一个城市选的是生活费花费大于等于0的时候才可以,最好是多余的,这样接下来的就算是花超了(一定限度内的花超),也可以通过前边的剩余来补充进去,就可以多玩一个。所以先存一下每个城市的生活费减去花费的剩余,然后从非负开始找,找一个数组存一下现在还剩下的多余花费,还要在找一个数组存一下当前点用的天数,可以从头开始重新选择新的城市。

     1 //HDU 1422
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <iostream>
     5 using namespace std;
     6 
     7 int a[200010] ;
     8 int c[200010] ;
     9 int sum[200010] ;
    10 int main()
    11 {
    12     int n;
    13     while(~scanf("%d",&n))
    14     {
    15         int w, l ;
    16         for(int i = 0 ; i < n ; i++)
    17         {
    18             scanf("%d %d",&w,&l) ;
    19             a[i] = a[n+i] = w-l ;
    20         }
    21         int i ;
    22         for(i = 0 ; i < 2*n ; i++)
    23             if(a[i] >= 0)
    24                 break ;
    25         if(i == 2*n)
    26         {
    27             printf("0
    ") ;
    28             continue;
    29         }
    30         int cnt = 1 ;
    31         sum[i] = a[i] ;
    32         c[i] = 1 ;
    33         i++ ;
    34         for( ; i < 2*n ; i++)
    35         {
    36             if(cnt == n) break ;
    37             if(sum[i-1] + a[i] >= 0)
    38             {
    39                 c[i] = c[i-1]+1 ;
    40                 sum[i] = sum[i-1]+a[i] ;
    41                 cnt = max(cnt,c[i]) ;
    42             }
    43             else
    44             {
    45                 sum[i] = 0 ;
    46                 c[i] = 0 ;
    47             }
    48         }
    49         printf("%d
    ",cnt) ;
    50     }
    51     return 0 ;
    52 }
    View Code
  • 相关阅读:
    CSS语言
    HTML语言
    JDBC技术
    存储过程
    Oracle和Mysql数据库技术
    正则表达式
    反射
    XML技术
    设计模式初步专题(自学,适合初级.更深入的会在框架阶段)
    线程池专题(自学)
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3645727.html
Copyright © 2011-2022 走看看