2 条题解

  • 1
    @ 2025-5-7 20:59:57

    观察易得,经常要用到区间之和,那不妨设置一个数组sum[i]记录从1~i位置的所有数字之和。

    对于相加操作: 以区间[l,r]为例有:

    • sum[r]:从1位置到r位置的所有数字之和
    • sum[l-1]:从1位置到l-1位置的所有数字之和
    • 故有sum[r]-sum[l-1]即为所得

    JAVA的实现代码如下:

    import java.util.*;
    import java.util.StringTokenizer;
    import java.io.*;
    
    public class Main {
    
    	public static void main(String[] args) {
    		int n=in.nextInt();
    		int q=in.nextInt();
    		long[] sum=new long[n+1];
    		for(int i=1;i<=n;i++){
    			int num=in.nextInt();
    			sum[i]=sum[i-1]+num;
    		}
    		while(q-->0){
    			int l=in.nextInt(),r=in.nextInt();
    			out.println(sum[r]-sum[l-1]);
    		}
    		out.close();
    	}
    	
    	
    
    	static FastReader in=new FastReader();
    	static PrintWriter out=new PrintWriter(System.out);
    	static class FastReader{
    		static BufferedReader br;
    		static StringTokenizer st;
    		FastReader(){
    			br=new BufferedReader(new InputStreamReader(System.in));
    		}
    		String next() {
    			String str="";
    			while(st==null||!st.hasMoreElements()) {
    				try {
    					str=br.readLine();
    				}catch(IOException e) {
    					throw new RuntimeException(e);
    				}
    				st=new StringTokenizer(str);
    			}
    			return st.nextToken();
    		}
    		int nextInt() {
    			return Integer.parseInt(next());
    		}
    		double nextDouble() {
    			return Double.parseDouble(next());
    		}
    		long nextLong() {
    			return Long.parseLong(next());
    		}
    	}
    	
    }
    
    • 0
      @ 2025-9-14 15:28:41

      分享一个c++题解

      #include<iostream>
      using namespace std;
      int n,q,a[100100],sum[100100];
      int main(){
       cin>>n>>q;
       for(int i=1;i<=n;i++){
          cin>>a[i];
          sum[i]+=sum[i-1]+a[i];
        
       }
       for(int i=1;i<=q;i++){
          int l,r;
          cin>>l>>r;
          cout<<sum[r]-sum[l-1]<<endl;
       }
      }
      
      • 1

      信息

      ID
      79
      时间
      1000ms
      内存
      256MiB
      难度
      1
      标签
      递交数
      134
      已通过
      58
      上传者