zoukankan      html  css  js  c++  java
  • BZOJ 1783 [Usaco2010 Jan]Taking Turns

    BZOJ_1783

        乍看上去大概就要dp的,细想一下确实dp是可行的,不过中文描述里面漏了句关键的话,一开始让我迷茫了一阵,后来仔细看了英文描述之后才算清楚了。

        另外突发奇想用英文写了题解,大概脑子在深夜的时候总会有点诡异的想法吧……(本人六级尚未考过,如果英文太烂的话还望谅解……)

    /*
        f[i] means the maximum weights we can get between hay bale i and hay bale N (include i and N).
        id[i] means which one we should choose firstly if we want to get f[i] weights between hay bale i and hay bale N (include i and N).
    
        We may choose the best choice in (1) and (2).
        (1) donot choose hay bale i : f[i] = f[i + 1], id[i] = id[i + 1];
        (2) choose hay bale i : f[i] = w[i] + f[id[i + 1] + 1], id[i] = i. (w[i] means the weight of hay bale i)
    
        note: We should make f[N] = w[N], f[N + 1] = 0, id[N] = N initially.
    */
    
    #include<stdio.h>
    #include<string.h>
    #define MAXD 700010
    typedef long long LL;
    LL f[MAXD];
    int N, id[MAXD], w[MAXD];
    int main()
    {
        while(scanf("%d", &N) == 1)
        {
            for(int i = 1; i <= N; i ++) scanf("%d", &w[i]);
            f[N] = w[N], f[N + 1] = 0, id[N] = N;
            for(int i = N - 1; i >= 1; i --)
            {
                f[i] = f[i + 1], id[i] = id[i + 1];
                LL t = w[i] + f[id[i + 1] + 1];
                if(t >= f[i]) f[i] = t, id[i] = i;
            }
            printf("%lld %lld\n", f[1], f[id[1] + 1]);
        }
        return 0;
    }
  • 相关阅读:
    Leon-ai on WSL
    自动化测试工具
    创建自己的Spring Boot Starter
    Spring Boot内嵌Tomcat session超时问题
    Spring Boot
    Spring Cloud
    Socket编程之Tomcat模拟_采坑汇总
    访问者模式
    模版模式
    策略模式
  • 原文地址:https://www.cnblogs.com/staginner/p/2740501.html
Copyright © 2011-2022 走看看