C# TLE 求助
查看原帖
C# TLE 求助
195198
E1_de5truct0r楼主2024/5/8 15:06

RT,70

using System;

namespace HelloWorld
{
    class TREE
    {
        int[] tr=new int[500005];
        public void add(int x,int y,int n){
            for(int i=x;i<=n;i+=(i&-i)) tr[i]+=y;
        }
        public int query(int x){
            int sum=0;
            for(int i=x;i>0;i-=(i&-i)) sum+=tr[i];
            return sum;
        }
    }
    internal class Program
    {
        static int n,m;
        static int[] b=new int[500005];
        static void Main()
        {
            string s=Console.ReadLine();
            string[] nums=s.Split(new[]{' '},2);
            n=int.Parse(nums[0]);
            m=int.Parse(nums[1]);
            string t=Console.ReadLine();
            string[] a=t.Split(new[]{' '},n);
            for(int i=0;i<n;i++) b[i]=int.Parse(a[i]);
            TREE tree=new TREE();
            for(int i=0;i<n;i++) tree.add(i+1,b[i],n);
            while(m-->0){
                string p=Console.ReadLine();
                string[] x=p.Split(new[]{' '},3);
                if(x[0]=="1"){
                    tree.add(int.Parse(x[1]),int.Parse(x[2]),n);
                }else{
                    Console.WriteLine(tree.query(int.Parse(x[2]))-tree.query(int.Parse(x[1])-1));
                }
            }
        }
    }
}
2024/5/8 15:06
加载中...