• Easy Equation【差分+前缀和】


    题意

    给出 (4) 个整数:(a,b,c,d),求出满足方程:(x+y+z=k) 的方案数,其中:(0leq x leq a,0leq y leq b,0 leq z leq c,0leq k leq d)
    (0leq a,b,c,d leq 10^6)
    题目链接:https://ac.nowcoder.com/acm/contest/8688/A

    分析

    先求出 (x+y=i) 的方案数,然后将 (x+y=i) 视作一个数,求出 (i+z) 的方案数,然后枚举 (k) 的范围,求出答案。

    代码

    #include <bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    const int N = 4e6 + 5;
    ll f1[N], f2[N];
    
    int main()
    {
        int a, b, c, d;
        scanf("%d%d%d%d", &a, &b, &c, &d);
        for (int i = 0; i <= a;i++)//求出x+y的方案数
        {
            f1[i] += 1;
            f1[i + b + 1] -= 1;
        }
        f1[0] = 1;
        for (int i = 1; i <= a + b;i++)//i=x+y时的方案数
            f1[i] += f1[i - 1];
        for (int i = 0; i <= a + b;i++)
        {
            f2[i] += f1[i];
            f2[i + c + 1] -= f1[i];
        }
        f2[0] = 1;
        for (int i = 1; i <= a + b + c;i++)
            f2[i] += f2[i - 1];
        ll ans = 0;
        for (int i = 0; i <= d;i++)
            ans += f2[i];
        printf("%lld
    ", ans);
        return 0;
    }
    
  • 相关阅读:
    项目管理原则
    开发规范
    讲故事-如何才算确认了需求
    关于概要设计
    jQuery操作
    IE8,IE9,IE10绿色版,以及ColorPix
    机务UI设计小节
    Abstract Factory
    Flyweight
    Chain of Responsibility
  • 原文地址:https://www.cnblogs.com/1024-xzx/p/13929844.html
Copyright © 2020-2023  润新知