
POJ
vsooda
这个作者很懒,什么都没留下…
展开
-
PKU 3468
与上题类似。只是变成了累加。每次更新的时候要更新sum值(加)多了query的操作。与update类似#include using namespace std;#define lson l, m, rt << 1#define rson m+1, r, rt << 1 | 1#define LL long longconst int maxn = 1111111;LL add原创 2013-01-03 14:42:42 · 747 阅读 · 0 评论 -
PKU 2528 WA
题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:这题数据范围很大,直接搞超时+超内存,需要离散化:离散化简单的来说就是只取我们需要的值来用,比如说区间[1000,2000],[1990,2012] 我们用不到[-∞,999][1001,1989][1991,1999][2001,2011][2013,+∞]这些值,所以我只需要1000,1990,2000,2012就够原创 2013-01-03 20:29:25 · 644 阅读 · 0 评论 -
PKU 3225
题意:区间操作,交,并,补等思路:我们一个一个操作来分析:(用0和1表示是否包含区间,-1表示该区间内既有包含又有不包含)U:把区间[l,r]覆盖成1I:把[-∞,l)(r,∞]覆盖成0D:把区间[l,r]覆盖成0C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换S:[l,r]区间0/1互换成段覆盖的操作很简单,比较特殊的就是区间0/1原创 2013-01-03 21:36:54 · 486 阅读 · 0 评论 -
PKU 2352 Stars 求比较小的数字个数
题目意思就是求每个星星左下方的星星的个数,由于y轴已经排序好了,我们可以直接用按x轴建立一维树状数组,然后求相当于它前面比它小的个数,模板直接一套就搞定了~~#include using namespace std;const int MAX = 32000 + 10;int c[MAX], level[MAX];int Lowbit(int x) { return原创 2013-01-11 21:37:19 · 720 阅读 · 0 评论 -
PKU 3067 Japan 树状数组
求道路的交叉点数。将道路按左边城市从大到小排序。如果相同则按右边从大到小排序。这样就跟stars和cows一样了。#include #include using namespace std;const int maxn = 1010;int c[maxn],result[maxn];typedef struct{ int e, s;} node;node nd[原创 2013-01-14 09:21:30 · 607 阅读 · 0 评论 -
PKU 2481 COWS 排序 + 树状数组
排好序后就跟stars那题一样了一次遍历排序后的数组,由于比当前遍历元素strong的区间只可能存在于已经遍历过的元素中;所以我们可以放心大胆的直接对树状数组求和然后向后更新树状数组中统治x的点上的值,因为那些位置都多了一个比 以他们为左端点的区间 强壮 的区间;#include #include using namespace std;const int maxn =原创 2013-01-13 11:00:18 · 596 阅读 · 0 评论 -
PKU 1195 二维树状数组
题目大意:给定n*n矩阵,和几种在线操作,包括对某一点(x,y)值修改,查询一个矩形(l, b, r, t)的元素和。二维的树状数组,直接把Update()和Getsum()改为二维即可#include using namespace std;const int maxn = 1100;int tree[maxn][maxn];int Lowbit(int x) { re原创 2013-01-12 22:44:59 · 667 阅读 · 0 评论 -
PKU 2778 HDU 2243 AC自动机 + 矩阵乘法
矩阵乘法:http://blog.youkuaiyun.com/vsooda/article/details/8510131构造trie图,继而构造出初始矩阵,mat[i][j]表示i走到j有几种走法 ,这个矩阵自乘n次之后就表示i走到j走n步有几种走法问你长度为N的串中不包含了模式串的串有几个n属于1 ~ 2000000000看到这个数据范围我们就应该敏感的想到这是矩阵~最多100个结点,先原创 2013-01-16 18:32:01 · 782 阅读 · 0 评论 -
PKU 1185 炮兵阵地 经典状态压缩dp
思路:状态压缩DP。很经典的状态压缩DP。用int型来表示每行的状态(如果int型的二进制的第i位为1,则表示这一行的第i列有安装大炮)。这样的话由于最多有10列,故由计算可得最多有60种状态。DP部分:dp[r][i][k]表示第r行的状态为k,第r-1行的状态为i时候,前r行最多能够安装的大炮数量。 #include#define max(a,b) ((a)>(b)?(a):(b))原创 2013-01-16 21:55:57 · 746 阅读 · 0 评论