2013年4月23日

SPOJ1029 - Matrix Summation

摘要: 题目大意给定一个N*N的矩阵A,每个元素的初始值为0,可以对矩阵进行一下两种操作:1、修改A[i][j]的值为d,(1<=i,j<=N)2、查询左下角坐标为(x1,y1),右上角坐标为(x2,y2)的子矩阵的元素和题解基本的树状数组,单点增减,区间求和#include<iostream>#include<cstring>#include<cstdio>#define MAXN 1050using namespace std;int n;int c[MAXN][MAXN],a[MAXN][MAXN];int lowbit(int x){ retur 阅读全文

posted @ 2013-04-23 01:55 仗剑奔走天涯 阅读(197) 评论(0) 推荐(0) 编辑

HDU3584 - Cube

摘要: 题目大意 给定一个体积为N*N*N立方体,每个单位小立方体A[x][y][z]里有一个值,初始值全部为0,我们可以对立方体进行一下两种操作: 1、查询A[x][y][z]的奇偶性 2、对子立方体的每个元素的值进行增减 题解 三维树状数组,就是POJ2155 Matrix的三维推广形式 代码: #include<iostream>#include<cstdio>#include<cstring>#d... 阅读全文

posted @ 2013-04-23 01:45 仗剑奔走天涯 阅读(224) 评论(0) 推荐(0) 编辑

HDU3015 - Disharmony Trees

摘要: 题目大意 和POJ1990是一样的,只是把max改成min了。。。 给定N对二元组(x1,y1),(x2,y2),(x3,y3)…(xn,yn).每两个二元组之间(假设分别为i和j,i!=j)将会产生一个值ans(i,j)=min(xi,xj)*|yi-yj|,计算出sigma(ans(i,j))(1<=i,j<=n,i!=j) 题解 需要对x,y进行离散,然后把y值按降序排序,之后的做法和POJ... 阅读全文

posted @ 2013-04-23 01:26 仗剑奔走天涯 阅读(238) 评论(0) 推荐(0) 编辑

POJ1990 - MooFest

摘要: 题目大意给定N对二元组(x1,y1),(x2,y2),(x3,y3)…(xn,yn).每两个二元组之间(假设分别为i和j,i!=j)将会产生一个值ans(i,j)=max(xi,xj)*|yi-yj|,计算出sigma(ans(i,j))(1<=i,j<=n,i!=j)题解我们可以先对x值按升序排序,之后就是用两个树状数组进行维护了,公式推导过程不知道怎么讲。。。直接看代码好了。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define 阅读全文

posted @ 2013-04-23 01:20 仗剑奔走天涯 阅读(235) 评论(0) 推荐(0) 编辑

POJ3321 - Apple Tree

摘要: 题目大意有一颗苹果树,它有N个树叉,每个树叉最开始的时候都结了一个苹果,有时卡卡会从树上把某个苹果摘下来,有时没结苹果的树叉上又会长出苹果来,卡卡有时还想知道某个子树的总苹果数量有多少题解题目也是要求实现单点加减,区间求和的功能,赤裸裸的树状数组呀,不过此题给出的不是一个线性的序列,而是树形的,因此我们需要先进行预处理,把树转换为线性序列。用邻接表建立好树,然后对树进行重新编号,这个可以用DFS来实现,每个节点记录第一次访问和最后一次访问时的编号,假设为l和r,那么区间[l,r]之间的所有编号是以此节点为根节点的子树的各个节点的编号,这样就把树转化为线性结构了,之后就是用树状数组来处理了代码: 阅读全文

posted @ 2013-04-23 00:09 仗剑奔走天涯 阅读(281) 评论(0) 推荐(0) 编辑

导航