我是靠谱客的博主 可耐大叔,最近开发中收集的这篇文章主要介绍C - 敌兵布阵,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

模板题,用得线段树。

#include<iostream>
#include<string.h>
#include<string>
#include<stack>
#include<stdio.h>
#include<queue>
#include<functional>
#include<set>
#include<map>
#include<stdlib.h>
#include<vector>
#include<math.h>
#include <algorithm>
#pragma warning(disable:4996)
using namespace std;
int a[500010];
char s[60];
int sum[500001];
int q;
void build(int node, int left, int right)
{
	if (left == right)
		sum[node] = a[left];
	else
	{
		int middle = (left + right) / 2;
		build(2 * node, left, middle);
		build(2 * node + 1, middle + 1, right);
		sum[node] = sum[2 * node] + sum[2 * node + 1];
	}
}
void add(int node, int left, int right, int find, int v)
{
	if (left == right)
		sum[node] += v;
	else
	{
		int middle = (left + right) / 2;
		if (find <= middle)
			add(2 * node, left, middle, find, v);
		if (find>middle)
			add(2 * node + 1, middle + 1, right, find, v);
		sum[node] += v;
	}
}
void getsum(int node, int left, int right, int L, int R)
{
	if (right<L || left>R) return;
	if (L <= left && right <= R)
		q += sum[node];
	else
	{
		int middle = (left + right) / 2;
		getsum(2 * node, left, middle, L, R);
		getsum(2 * node + 1, middle + 1, right, L, R);
	}
}
int main()
{
	int  n, i, j,t,count=1;
	scanf("%d",&t);
	while (t--)
	{
		scanf("%d", &n);
		memset(sum, 0, sizeof(sum));
		memset(a, 0, sizeof(a));
		for (i = 1; i <= n; i++)
			scanf("%d", &a[i]);
		build(1, 1, n);
		printf("Case %d:n", count++);
		while (~scanf("%s", s)&&s[0]!='E')
		{
			if (s[0] == 'Q')
			{
				int A, B;
				q = 0;
				scanf("%d%d", &A, &B);
				getsum(1, 1, n, A, B);
				printf("%dn", q);
			}
			if (s[0] == 'A')
			{
				int A, B;
				scanf("%d%d", &A, &B);
				add(1, 1, n, A, B);
			}
			if (s[0] == 'S')
			{
				int A, B;
				scanf("%d%d", &A, &B);
				add(1, 1, n, A, -B);
			}
		}
	}
	return 0;
}


最后

以上就是可耐大叔为你收集整理的C - 敌兵布阵的全部内容,希望文章能够帮你解决C - 敌兵布阵所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部