树状数组
FuTaimeng
好像有人说我冰雪聪明~~~
展开
-
BZOJ1264: [AHOI2006]基因匹配Match
BZOJ1264: [AHOI2006]基因匹配MatchDp·树状数组题解: http://www.cppblog.com/MatoNo1/archive/2011/03/19/142240.html?opt=admin LCS问题的朴素时间复杂度为O(NM)O(NM)。对于本题显然需要优化。 观察LCS的转移方程: F[i][j] = F[i-1][j-1]+1(当A[i]==B[j]时原创 2017-08-21 22:19:21 · 241 阅读 · 0 评论 -
BZOJ1103: [POI2007]大都市meg
BZOJ1103: [POI2007]大都市meg括号序·树状数组题解:首先求出括号序。如样例为1455422331 将进栈时打上标记1,出栈时打标记-1,这样已经退出的点的两个标记就会互相抵消 然后出栈序号与1号序号之间的权值和-1即为答案(排除1的影响) 修改时只要将对应标记变为0就可以了Code:#include <iostream> #include <cstring> #incl原创 2017-08-23 13:40:22 · 190 阅读 · 0 评论 -
BZOJ1227: [SDOI2009]虔诚的墓主人
BZOJ1227: [SDOI2009]虔诚的墓主人树状数组题解:我们发现一个格子的答案就是: C(left,k)∗C(right,k)∗C(up,k)∗C(down,k) C(left,k) * C(right,k) * C(up,k) * C(down,k) left、right、up、downleft、right、up、down分别表示这个点的左右上下有几棵树。坐标范围很大,想到离散化,原创 2017-08-23 13:41:04 · 210 阅读 · 0 评论 -
LA5106: Let the light guide us
LA5106: Let the light guide usDp·树状数组题解:裸方程: 当|j−k|<=magic[i−1][k]+magic[i][j]|j-k|<=magic[i-1][k]+magic[i][j]时, f[i][j]=min{f[i−1][k]}+cost[i][j]f[i][j]=min\{f[i-1][k]\}+cost[i][j]时间复杂度:O(nm2)O(nm^2原创 2017-09-05 16:09:54 · 337 阅读 · 0 评论 -
BZOJ3594: [Scoi2014]方伯伯的玉米田
BZOJ3594: [Scoi2014]方伯伯的玉米田动态规划·二维树状数组题解:感觉自己Dp好弱啊,啥也想不出来。。。QwQ。有一个结论,提升[l,r]可以用提升[l,n]来替代,总不会更坏。 (像这种区间长度没有限制自由度很高比较棘手的一般就是找个最优性结论限制住)设f[i][j]表示前i个提升j次的最长LIS长度。 f[i][j]=maxf[k][l](k<i,l≤j,ak+l≤ai+j)原创 2017-08-29 11:53:34 · 365 阅读 · 0 评论 -
[USACO17FEB]Why Did the Cow Cross the Road II P
[USACO17FEB]Why Did the Cow Cross the Road II P树状数组·特殊的Dp更新方式题解:类似最长公共子序列的方程: f[i][j]=max( f[i-1][j], f[i][j-1] ) f[i][j]=max( f[i][j], f[i-1][j-1]+1 ) 当i、j可以匹配我们发现+1的位置很少,想办法只处理这些有贡献的。 也就是要快速推知f[i-原创 2017-10-18 12:13:35 · 475 阅读 · 0 评论 -
CF #439 E The Untended Antiquity
CF #439 E The Untended Antiquity随机化·二维BIT题解:添加一个矩形相当于为矩形内部的每个点都打上一个“在某个矩形内”的标记。查询的时候只要查询两个点的标记序列是否完全一样就行了。标记序列不好维护,直接把它变成一个数,类似于对它hash。要求可以撤销,xor是一个不错的选择。加减好像也可以。为了减少冲突,每个矩形的标记设为一个随机的unsigned long long原创 2017-10-11 14:43:51 · 311 阅读 · 0 评论 -
[USACO17FEB]Why Did the Cow Cross the Road I P
[USACO17FEB]Why Did the Cow Cross the Road I P逆序对题解:性质1:转一个就行。 性质2:设c[i]是a[i]在b数组中的位置,ans=c的逆序对数量。 性质3:把队首的转到队尾去,答案+=大于它的-小于它的。Code://null原创 2017-10-14 18:57:39 · 493 阅读 · 0 评论