![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
训练
文章平均质量分 78
BraketBN
这个作者很懒,什么都没留下…
展开
-
【BZOJ4430】[Nwerc2015]Guessing Camels赌骆驼【树状数组】【或CDQ分治】
【题目链接】题解:直接用CDQ分治是O(nlog^2n)的,似乎可以过。一种O(nlogn)的做法,考虑补集转化,答案 = 总对数 - 不满足条件的对数。考虑不满足条件的数的性质,这一对数在其中两个排列里的位置关系是相同的,在另一个排列里的位置关系相反。那么统计两两排列之间不满足偏序关系的数对的个数,这样统计下来每对数都被统计了两次,除以2就是不满足条件的对数。原创 2016-05-13 09:55:20 · 1457 阅读 · 0 评论 -
【BZOJ4510】[Usaco2016 Jan]Radio Contact【DP】
【题目链接】看了半天题才看懂...题解:设dp[i][j]表示FJ走到第i步,Bessie走到第j步时,的最小花费。那么从dp[i][j]向dp[i + 1][j],dp[i][j + 1],dp[i + 1][j + 1]转移就完了。复杂度:时间复杂度O(nm),空间复杂度O(nm)收获:要留意到无后效性/* Forgive me原创 2016-06-10 11:43:09 · 1073 阅读 · 0 评论 -
【BZOJ4579】[Usaco2016 Open]Closing the Farm【并查集】【离线】
【题目链接】感觉和BZOJ1015差不多。。题解:倒着考虑操作,就变成了加边。记录当前时刻有多少个连通块,如果有一个,那么答案是YES,否则是NO。对于当前点,把当前点与已经添加进的点合并。每合并一次,连通块减一。(一开始连通块先++)复杂度:时间复杂度O(n+mα(n))空间复杂度O(n+m)收获:当两个点已经在一个并查集里的时原创 2016-06-10 10:10:42 · 1112 阅读 · 0 评论 -
【BZOJ4580】[Usaco2016 Open]248【区间DP】【或 贪心】
【题目链接】以为adjacent是不同的意思,结果是相邻23333,写了个贪心WA了一发。题解:设dp[l][r]表示将l和r合并之后,得到的最大的数,于是就可以转移了dp[l][r] = dp[l][k] + 1(dp[l][k] == dp[k + 1][r])另外还有贪心写法,只不过太麻烦了...话说好像写记忆化搜索的会被卡。。复杂度:时间原创 2016-06-10 09:21:24 · 1306 阅读 · 0 评论 -
【BZOJ3522】[Poi2014]Hotel【DFS】
【题目链接】NOIP2014D1T2是从这个题改的吧。。题解:首先可以发现,满足条件的点对一定是“有一个中心点,三个点到中心点的距离相等,且三个点分别在不同子树中”这种情况。那么枚举中心点,然后遍历子树,统计答案。d[i]为临时数组,表示当前子树中深度为i的点有多少个。d1[i]表示,当前点已经遍历过的子树中,深度为i的点有多少个。d2[i]表示,当前点已经遍历过的子树原创 2016-05-31 16:05:57 · 928 阅读 · 0 评论 -
【BZOJ4378】[POI2015]Logistyka【树状数组】【结论题】
【题目链接】题解:首先得有一个结论:设个数大于s的数字有k个(如果k大于c,显然是TAK。这里讨论k 数字和不小于(c - k) * s,那么一定有解。并不会证明...用树状数组记录一下数字的个数以及数字的数字和,然后判断就可以了。复杂度:时间复杂度:O(mlogm),空间复杂度:O(m)。1A。GET:结论题.../* Te原创 2016-05-09 20:33:58 · 1168 阅读 · 0 评论 -
【BZOJ4385】[POI2015]Wilcze doły【单调队列】【前缀和】【Two Pointers】
【题目链接】题解:如果区间[j, i]固定,那么一定是将权值最大的一段变为0。用单调队列维护一段区间内权值最大的子段下标(这里记录右端点下标,设为x),枚举右端点i,用尺取法计算出j。一段区间[j, i]合法的条件是sum[i] - sum[j - 1] - (sum[x] - sum[x - d]) 复杂度:时间复杂度:因为每个点最多遍历2次,复杂度为O(n)原创 2016-05-09 17:05:10 · 948 阅读 · 0 评论 -
【BZOJ3072】[Pa2012]Two Cakes【DP】
【题目链接】题解:很容易想到O(n^2)DP的做法。(1)A[i] == B[j],dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + 1(2)A[i] != B[j],dp[i][j] = dp[i - t + 1][j - t + 1] + t,t表示最长的一段不相等的数的长度发现如果连续的一段内要填写的两个数都不相同,那么一定是贪原创 2016-05-08 16:16:03 · 1227 阅读 · 1 评论 -
【BZOJ2084】[Poi2010]Antisymmetry【Manacher】
【题目链接】题解:因为和回文串定义类似,且数据范围很大,那么就可以想到是Manacher了。把增加回文半径那里的判断条件改改就可以了。复杂度:时间复杂度O(n),空间复杂度O(n)。WA:因为答案只可能是偶数串,更新mx那里还得判断,WA了3发。GET:自己想到了用Manacher,也注意到答案只可能是偶数串。但是写挂了2333,原创 2016-05-08 16:01:29 · 811 阅读 · 0 评论 -
【BZOJ3747】[POI2015]Kinoman【线段树】
【题目链接】看到数据范围以为是O(n)做法,再看看status似乎带了个log?然后去搜题解,没想到是线段树= =。题解:设pre[i]表示与i这个位置上的数相等的前一个数的下标。用线段树维护答案。枚举右端点,每次加入一个数,那么pre[i] + 1到i这段位置的答案加上这个数的权值,pre[pre[i]] + 1到pre[i]这段位置的答案减去这个数的权值,然原创 2016-05-09 15:22:04 · 1189 阅读 · 0 评论 -
【BZOJ4439】[Swerc2015]Landscaping【最小割】
【题目链接】题解:第一眼觉得是裸最小割模型,写了之后发现样例跑出个5000...问了神犇,才知道:1 相同地之间也得加容量为A的边,因为一开始的高低地不能决定最后策略的高低地。2 要加双向边,因为一开始并不知道某个点应该属于S集还是T集。复杂度:时间复杂度:O(maxflow(n, m)),空间复杂度O(n + m)1WA:相同地之间也得原创 2016-05-13 16:58:30 · 774 阅读 · 0 评论 -
【BZOJ4428】[Nwerc2015]Debugging调试【DP】【记忆化搜索】【分块】
【题目链接】题解:最坏情况指的是出错位置始终在最长的区间里。为了使时间最少,我们每次一定是尽量均分区间。设dp[n]表示,在最坏情况下,处理n行代码所需要的最少时间。那么有dp[n] = min{(i - 1) * p + dp[ceil(n / i)]} + r意义是,将n行代码分成i块,那么需要加i - 1个printf,然后对最长的区间递归处理。直接枚举i是O原创 2016-05-13 14:57:14 · 905 阅读 · 0 评论 -
【BZOJ3750】[POI2015]Pieczęć【暴力】
【题目链接】题解:暴力。刻章只存x的位置,这样复杂度小点。复杂度:时间复杂度:O(nm*刻章里x的个数),空间复杂度:O(nm+ab)3WA:时间戳写挂了。GET:一定要注意时间戳。/* Telekinetic Forest Guard */#include #include #include using nam原创 2016-05-13 15:37:52 · 592 阅读 · 0 评论 -
【BZOJ4429】[Nwerc2015] Elementary Math小学数学【二分图匹配】
【题目链接】题解:把算式和对应的数连边,跑二分图匹配。要先离散化一下数字,或者用map。复杂度:时间复杂度:O(二分图匹配),hungary是O(nm)。空间复杂度:O(n + m)。1A。GET:有算式,有数字,要连接起来,且不相同,那么就是匹配。/* Telekinetic Forest Guard */#inclu原创 2016-05-13 08:39:21 · 996 阅读 · 0 评论