zoukankan      html  css  js  c++  java
  • 花神游历各国

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    #include<cmath>
    #define maxn 5000100
    using namespace std;
    typedef long long ll;
    ll tree[maxn];
    ll arr[maxn];
    int vis[maxn];
    int root = 1;
    int push_down(int node, int be, int en) {
    	if (be == en) {
    		tree[node] = sqrt(tree[node]);
    		if (tree[node] == 1 || tree[node] == 0) vis[node] = 1;
    		return 0;
    	}
    	int l = 2 * node;
    	int r = 2 * node + 1;
    	int mid = (be + en) / 2;
    	if(!vis[l]) push_down(l, be, mid);
    	if(!vis[r]) push_down(r, mid + 1, en);
    	tree[node] = tree[l] + tree[r];
    	if (vis[l] && vis[r]) vis[node] = 1;
    }
    
    ll update(int node, int be, int en, int LL, int RR) {
    	if (RR < be || LL > en) return 0;
    	else if (be >= LL && RR >= en) {
    		if (vis[node]) return tree[node];
    		else {
    			push_down(node, be, en);
    			return tree[node];
    		}
    	}
    
    	int l = 2 * node;
    	int r = 2 * node + 1;
    	int mid = (be + en) / 2;
    	update(l, be, mid, LL, RR);
    	update(r, mid + 1, en, LL, RR);
    	tree[node] = tree[l] + tree[r];
    	return 0;
    }
    int bulit(int node, int be, int en) {
    	if (be == en) {
    		tree[node] = arr[be];
    		return 0;
    	}
    	int l = 2 * node;
    	int r = 2 * node + 1;
    	int mid = (be + en) / 2;
    	bulit(l, be, mid);
    	bulit(r, mid + 1, en);
    	tree[node] = tree[l] + tree[r];
    	return tree[node];
    }
    
    ll qurry(int node, int be, int en, int LL, int RR) {
    	if (RR < be || LL > en) return 0;
    	else if (be >= LL && RR >= en) return tree[node];
    
    	int l = 2 * node;
    	int r = 2 * node + 1;
    	ll val1 = 0;
    	ll val2 = 0;
    	int mid = (be + en) / 2;
    	val1 = qurry(l, be, mid, LL, RR);
    	val2 = qurry(r, mid + 1, en, LL, RR);
    	return val1 + val2;
    }
    
    int n, m;
    int main() {
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++) {
    		scanf("%lld", &arr[i]);
    	}
    	bulit(1, 1, n);
    	int t;
    	int be, en;
    	ll vv;
    	scanf("%d", &m);
    	for (int i = 0; i < m; i++) {
    		scanf("%d", &t);
    
    		if (t == 2) {
    			scanf("%d %d", &be, &en);
    			update(1, 1, n, be, en);
    		}
    		else if (t == 1) {
    			scanf("%d %d", &be, &en);
    			ll val = qurry(1, 1, n, be, en);
    			printf("%lld
    ", val);
    		}
    	}
    
    }
    

      

    寻找真正的热爱
  • 相关阅读:
    Flash 9/Flash CS 3 HTTP Post 请求Web Service by .net
    Custom Draw
    [转]NDIS开发[网络驱动开发]
    http header详解
    [MSDN]用 SQL Server 2005中的 CLR 集成
    JSF 页面之间传值
    [转]采用HttpModules来重写URLs(实践篇)
    [转]聚集索引和非聚集索引(sql server索引结构及其使用)
    [转]使用showModalDialog打开模态窗口添加数据后刷新原窗口
    ASP.Net中自定义Http处理及应用之HttpHandler篇
  • 原文地址:https://www.cnblogs.com/lesning/p/11758399.html
Copyright © 2011-2022 走看看