zoukankan      html  css  js  c++  java
  • 序列的区间操作

    知识点

    这是一个比较零碎的小点,之前并不知道,只会暴力233333
    一个数组(a)(假设数组长为(a)),然后数组(a)的下标在([l,r])范围内元素加上/减去一个数(x),可以这样操作:

    (a[l]=a[l]+n;a[r+1]=a[r+1]-n)

    求操作后的(a[k])即为:

    (a[k]=sum_{i=0}^{k}a[i])

    相关题目

    eg1:HDU 1556 Color the ball (原题戳我~)

    Sample Input

    3
    1 1
    2 2
    3 3
    3
    1 1
    1 2
    1 3
    0
    

    Sample Output

    1 1 1
    3 2 1
    

    代码样例

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <set>
    #include <string>
    #include <map>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <cmath>
    using namespace std;
    typedef long long ll;
    
    const int maxn = 100000 + 10;
    int ball[maxn];
    
    int main()
    {
        int n;
        while (cin >> n)
        {
            if (n == 0)
                break;
            memset(ball, 0, sizeof(ball));
            for (int i = 0; i < n; i++)
            {
                int a, b;
                cin >> a >> b;
                ball[a]++;
                ball[b + 1]--;
            }
            for (int i = 1; i <= n; i++)
            {
                ball[i] += ball[i - 1];
                if (i < n)
                    cout << ball[i] << " ";
                else
                {
                    cout << ball[i] << endl;
                }
            }
        }
        // system("pause");
        return 0;
    }
    

    完~

  • 相关阅读:
    第四周进度条
    单元测试
    第四周开发日志(psp)
    软件工程个人作业03
    第四周课堂作业——单元测试
    进度条 第三周
    开发日志
    软件工程个人作业2
    《构建之法》阅读笔记01
    第一二周进度条
  • 原文地址:https://www.cnblogs.com/cafu-chino/p/11759596.html
Copyright © 2011-2022 走看看