zoukankan      html  css  js  c++  java
  • HDU2525 Clone Wars 模拟

    题意:一言难尽,就不说了.

    解法:我们只要把握好要保留哪些状态以及每天会有哪些动作要进行更新就可以了.该题的话,我们只需要保留:
    A.每天有多少克隆士兵存活在命题者所设定的世界里面,当然每个士兵都有一个生存天数的属性.
    B.每天有多少士兵正在培养,每个培养体当然有一个已经培养的天数属性.
    然后我们就要定义一些动作出来,从培养体变成士兵,已经获得材料.

    代码如下:

    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    using namespace std;
    
    int N, D, A, K, X;
    // 保留两个信息,即当天克隆人已经生存的天数
    // 以及正在培育中的人已经培育的天数
    // 由于天数最多只有100天,所以我们可以使用数组来进行模拟 
    
    long long P[105], W[105]; // P表示克隆人信息,W表示培育的信息
    
    void init() {
        memset(P, 0, sizeof (P));
        memset(W, 0, sizeof (W));
        P[0] = N; // 表示有N个人已经存活了0天
    }
    
    void updateday() {
        for (int i = D; i >= 0; --i) {
            P[i+1] = P[i];
        }
        for (int i = K; i >= 0; --i) {
            W[i+1] = W[i];
        }
        P[0] = W[K];
    }
    
    void collect() { // 每天例行任务,收集克隆体种子 
        W[0] = 0;
        for (int i = 1; i <= A; ++i) {
            W[0] += P[i];
        }
    }
    
    int main() {
        int T;
        scanf("%d", &T);
        while (T--) {
            long long cnt = 0;
            scanf("%d %d %d %d %d", &N, &D, &A, &K, &X);
            init();
            for (int i = 1; i <= X; ++i) { // 更新到要询问的天数 
                updateday();
                collect(); 
                for (int i = 1; i <= D; ++i) {
                    cnt += P[i];
                }
            }
            printf("%I64d\n", cnt * 5);
        }
        return 0;    
    }
  • 相关阅读:
    数“1”游戏
    第二次冲刺期_每日站立会议_个人记录_文档
    第一次冲刺期——每日站立会议——个人记录——文档
    团队绩效
    其他小组对我们的评价汇总
    Sprint评分表
    大作业项目冲刺阶段(一)
    丹佛机场行李系统Postmortem
    团队项目测试计划
    SCRUM报告(1)
  • 原文地址:https://www.cnblogs.com/Lyush/p/2839225.html
Copyright © 2011-2022 走看看