• Generic Cow Protests-G——60分做法


    【 题目描述】
    FJ 家的 N 头奶牛正在排队游行抗议。 一些奶牛情绪激动, FJ 测算下来, 排在第 i 位的奶牛的理智
    度为 Ai, 数字可正可负。
    FJ 希望奶牛在抗议时保持理性, 为此, 他打算将这条队伍分割成几个小组, 每个抗议小组的理智度
    之和必须大于或等于零。 奶牛的队伍已经固定了前后顺序, 所以不能交换它们的位置, 所以分在一个小
    组里的奶牛必须是连续位置的。 除此之外, 分多少组, 每组分多少奶牛, 都没有限制。
    FJ 想知道有多少种分组的方案, 由于答案可能很大, 只要输出答案除以 1000000009 的余数即可。
    【 输入格式】
    第 1 行一个整数 N;
    第 2 行到第 N+1 行,第 i+1 行有一个整数 Ai;
    【 输出格式】
    输出共一行一个整数: 表示分组方案数模 1000000009 的余数;
    【 输入样例】
    4 2 3 -
    3
    1
    【 输出样例】
    4
    【 样例说明】 如果分两组, 可以把前三头分在一组, 或把后三头分在一组; 如果分三组, 可以把中间两
    头分在一组, 第一和最后一头奶牛自成一组; 最后一种分法是把四头奶牛分在同一组里。
    【 数据规模】
    对于 20%的数据: 1≤N≤20;
    对于 40%的数据: 1≤N≤1,000;
    对于 60%的数据: 1≤N≤10,000;
    对于 100%的数据: 1≤N≤100,000; |Ai|≤10,000;

    此题很容易想到前缀和思路,只要求出前缀和,用DP求出总数即可,
    DP方程也很好推

    for(register int i=1;i<=n;i++)
         for(register int j=0;j<=i-1;j++){
            if(sum[i]<sum[j]) continue;
            dp[i]+=dp[j]%1000000009;
         }
  • 相关阅读:
    按属性分割要素
    python os.path模块
    用数组显示裴波那契数列
    计算两位数的加减乘除
    输入一串数字统计0到9每个数字的个数
    开辟新空间输入成绩
    关系表达式、条件表达式、逻辑表达式
    变量、函数和程序控制
    哥德巴赫定理
    找出二维数组中最大的值
  • 原文地址:https://www.cnblogs.com/stevensonson/p/7612202.html
Copyright © 2020-2023  润新知