• 区间sum 和为k的连续区间-前缀和


    区间sum

    有一个长度为n的正整数序列a1--an,candy想知道任意区间[L,R]的和,你能告诉他吗?

    第一行一个正整数n(0<n<=1e6),
    第二行为长度为n的正整数序列 a1到an(ai<=1e9,sum(a)<=1e18),
    第三行一个正整数m(m<=1e6),表示询问次数,
    随后m行,每行两个正整数L,R(1<=L<=R<=n)。

    m行输出,对应m次询问结果

     复制
    5
    1 4 3 6 3
    3
    1 3
    2 2
    1 5
    8
    4
    17

    一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间i,ji,j,(1 <= i <= j <= n),使得aii + ... + ajj = k。

     

    Input第1行:2个数N,K。N为数列的长度。K为需要求的和。(2 <= N <= 10000,-10^9 <= K <= 10^9)
    第2 - N + 1行:Aii(-10^9 <= Aii <= 10^9)。Output如果没有这样的序列输出No Solution。 
    输出2个数i, j,分别是区间的起始和结束位置。如果存在多个,输出i最小的。如果i相等,输出j最小的。Sample Input

    6 10
    1
    2
    3
    4
    5
    6

    Sample Output

    1 4

    前缀和,通常用来求某个区间的和或和为多少的区间,前者时间复杂度由暴力O(n)节省到了O(1),是一个高效的区间和方法。

    #include<stdio.h>
    
    int main()  
    {
        int n,m,l,r,i;
        long long a[1000005];
        scanf("%d",&n);
        a[0]=0;
        scanf("%lld",&a[1]);
        for(i=2;i<=n;i++){
            scanf("%lld",&a[i]);
            a[i]+=a[i-1];
        }
        scanf("%d",&m);
        for(i=1;i<=m;i++){
            scanf("%d%d",&l,&r);
            printf("%lld
    ",a[r]-a[l-1]);
        }
        return 0;
    }
    
    
    


    #include<stdio.h>
    #include<string.h>
    int main()
    {
        long long n,k,f,i,j;
        
        long long a[10005],b[10005];
        scanf("%lld%lld",&n,&k);
        memset(b,0,sizeof(b));
        scanf("%lld",&a[1]);
        b[1]=a[1];
        for(i=2;i<=n;i++){
            scanf("%lld",&a[i]);
            b[i]+=b[i-1]+a[i];
        }
        f=0;
        for(i=1;i<=n;i++){
            for(j=i;j<=n;j++){
                if(b[j]-b[i-1]==k){
                    printf("%lld %lld
    ",i,j);
                    f=1;
                    break;
                }
            }
            if(f==1) break;
        }
        if(f==0) printf("No Solution
    ");
        return 0;
    }
  • 相关阅读:
    A Simple Problem with Integers poj 3468 多树状数组解决区间修改问题。
    Fliptile 开关问题 poj 3279
    Face The Right Way 一道不错的尺取法和标记法题目。 poj 3276
    Aggressive cows 二分不仅仅是查找
    Cable master(二分题 注意精度)
    B. Pasha and String
    Intervals poj 1201 差分约束系统
    UITextField的快速基本使用代码块
    将UIImage转换成圆形图片image
    color转成image对象
  • 原文地址:https://www.cnblogs.com/yzm10/p/7191321.html
Copyright © 2020-2023  润新知