zoukankan      html  css  js  c++  java
  • hdu 1166(线段树)

    点击打开链接


    都说是模版级别的。。

    但是还是RE了两次啊(是因为输入的原因)。。。。


    #include"stdio.h"
    #include"string.h"
    #define N 50011
    struct tree
    {
    	int x,y,mid;
    	int count;
    }A[4*N];
    
    void creat(int x,int y,int k)
    {
    	A[k].x=x;
    	A[k].y=y;
    	A[k].mid=(x+y)/2;
    	A[k].count=0;
    	if(x==y)return ;
    	creat(x,A[k].mid,2*k);
    	creat(A[k].mid+1,y,2*k+1);
    	return;
    }
    
    void insert(int x,int y,int k)
    {
    	if(A[k].x==A[k].y&&A[k].x==x)
    	{
    		A[k].count+=y;
    		return ;
    	}
    	if(x<=A[k].mid)insert(x,y,2*k);
    	else insert(x,y,2*k+1);
    	A[k].count=A[2*k].count+A[2*k+1].count;
    	return ;
    }
    
    int search(int x,int y,int k)
    {
    	if(A[k].x==x&&A[k].y==y)
    		return A[k].count;
    	int ans=0;
    	if(y<=A[k].mid)
    		ans+=search(x,y,2*k);
    	else if(x>A[k].mid)
    		ans+=search(x,y,2*k+1);
    	else
    	{
    		ans+=search(x,A[k].mid,2*k);
    		ans+=search(A[k].mid+1,y,2*k+1);
    	}
    	return ans;
    }
    int main()
    {
    	int T,t;
    	int n;
    	int x,y,a;
    	int i;
    	char s[15];
    	scanf("%d",&T);
    	t=1;
    	while(T--)
    	{
    		printf("Case %d:\n",t++);
    		scanf("%d",&n);
    		creat(1,n,1);
    		for(i=1;i<=n;i++)
    		{
    			scanf("%d",&a);
    			insert(i,a,1);
    		}
    		getchar();
    		while(scanf("%s",s),s[0]!='E')
    		{
    			scanf("%d%d",&x,&y);
    			if(s[0]=='A')insert(x,y,1);
    			else if(s[0]=='S')insert(x,-y,1);
    			else if(s[0]=='Q')printf("%d\n",search(x,y,1));
    		}
    	}
    	return 0;
    }
    
    				
    


  • 相关阅读:
    Python多线程笔记(三),queue模块
    Python多线程笔记(二)
    Python多线程笔记(一)
    Python3对时间模块的操作
    解决 ImportError: No module named 'pip._internal'问题
    Python字符串的操作
    Python 的AES加密与解密
    第十一周学习进度报告
    各组建议
    用户场景分析
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3095476.html
Copyright © 2011-2022 走看看