![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BZOJ
MatrixYg
暂无
展开
-
【BZOJ 1059】
1.题目链接。这其实是一个很简单的题目。首先考虑把行列都看作点,如果(i,j)这个地方的值是1,那么点i和点j就直接有边。形成一个图,首先这是一个二分图,原因很简单,因为不存在奇环。然后就是转换为,是不是这个二分图是不是有完美匹配,也就是每一行是不是都可以匹配到。数据比较小,直接km,邻接矩阵存图都能过。其实中间的那个转化,至于为啥,自己手画一下就明白了。#include <bits/...原创 2020-03-11 23:17:26 · 156 阅读 · 0 评论 -
【BZOJ 2734】集合取数
1.题目链接。这个题其实还是一个不错的题目,思路比较新颖。首先构造一个矩阵: 这个矩阵的构造规则是这样的:从左上角开始,a[1][1]=st,a[i][j+1]=3*a[i][j],a[i+1][j]=2*a[i][j].也就是右边的数都是它的三倍,做别的数都是他的两倍,然后得到了这样的一个矩阵。可以发现,这个矩阵里面出现了很多...原创 2020-03-02 00:36:43 · 224 阅读 · 0 评论 -
【BZOJ 1834】network 网络扩容
1.题目链接。第一问就是最大流,第二问也是比较套路,新建一个超级源点和起点相连,限流为k,费用为0,其他边的容量设置为大于k的数,然后从超级源点求MCMF即可。写这个题,主要是为了复习一下网络流,手写一遍MCMF。#include<bits/stdc++.h>using namespace std;const int maxn=5010*4;const int inf=1e...原创 2020-02-14 22:27:36 · 325 阅读 · 0 评论 -
【BZOJ 1087】互不侵犯King
1.题目链接。比较简单的状压DP,十分经典的一个题目。dp[i][j][now]代表前前i行,第i行放置j个的并且这一行的状态是now的方案数,这是一个人人为我的dp。然后随便转移一下就行了,因为转移是显然的: 只需要判断last转移到now合不合法就行了。#include<bits/st...原创 2020-02-14 16:24:27 · 236 阅读 · 0 评论 -
【BZOJ 1031】[JSOI2007]字符加密Cipher
1.题目链接。其实这是一个很简单的题目,就是后缀数据的裸题。考虑把字符串复制一份接到原来字符的后边,那么这个长度为2*n的字符就会有2*n个后缀,对这个字符串求后缀数组,排名前n的后缀再向后偏移n个字符就是答案。但是这个题断断续续写了两天,首先因为没带板子,其次现在也懒得抄板子了,就自己写后缀数组,修修改改加上公司的一些事,搞到现在才AC。#include<bits/stdc++.h&...原创 2020-02-12 15:22:09 · 159 阅读 · 0 评论 -
【SDOI 2017】
1.今天看了一下SDOI2017 的题目,感觉很棒,很中肯的题目。接下来几天把这几个题写了。(1)BZOJ 4816 。数字表格,看上去是个莫比乌斯反演的问题。待补(2)BZOJ 4817 。树点涂色这个题目看上去应该是树链剖分+线段树的组合,但是没办法动态的维护树上信息,可能还得上LCT。(3)BZOJ 4818。因为p很小,所以dp[i][j]表示前i个数,%p为j的方案数,转移是...原创 2019-11-13 23:27:33 · 154 阅读 · 0 评论 -
【BZOJ 4237】 稻草人:CDQ分治+单调栈上二分
1.题目链接。这个题目乍一看像是求一个偏序,但是好像有不是那么回事,因为两个点之间不能有第三个点,如何避免这一点呢?2.考虑对y分治,首先按照y排序。然后可以把序列分为两部分,一部分在上面,一部分在下面。枚举上半部分的点,计算左下方有多少个点符合条件,这样分治的过程中统计答案即可。但是怎么计算左下方的点呢?考虑这个图: 可以...原创 2019-11-08 23:16:51 · 169 阅读 · 0 评论 -
【BZOJ 1044】木棍分割
1.题目链接。首先第一问,由于木棍的长度都是非负数,所以前缀和单调不减,这样直接二分这个maxLen就可以得到答案。然后第二问,设dp[i][j]表示把对于前i个,切了j刀满足要求的方案数。这样,dp[i][j]的转移其实很好推: 然后,这里开始优化:(1)首先是空间优化,...原创 2019-08-09 20:34:26 · 348 阅读 · 0 评论 -
【BZOJ 1049】]数字序列
1.题目链接。首先,第一问最少需要改变的数,对于一个区间[i,j]长度位j-i+1.由于序列时严格单调递增的,所以后一个数比前一个数的差值至少也是1。那么a[j]-a[j]>=j-i..也就是说,区间的空位置至少要有j-1+1个才能符合条件。那么构造新的序列b[i]=a[i]-i.这个序列是单调不减的即可,对这个序列求一下单调不不减序列的长度,每两个元素中间的区间都是需要修改的,那么第一问的...原创 2019-08-09 15:19:46 · 286 阅读 · 0 评论 -
【BZOJ 2120】数颜色
1.题目链接。也是一种区间元素种类数的询问,但是加了修改。2.带修莫队时可以解决这种问题的,带修莫队就是带有修改的莫队算法,在原来算法的基础上加了一个时间戳,这个是干嘛的呢?其实就是判断一下当前的询问是不是完成了正确的修改,如果发现修改的次数少了或者多了,就改回来。排序的时候还是和普通的莫队类似,如果前边都相同就按照时间戳排序。#include <cstdio>#inclu...原创 2019-07-30 16:42:35 · 92 阅读 · 0 评论 -
【BZOJ 1485】有趣的数列
1.题目链接。其实这也是卡特兰数的一个定义,也可以转化为进出栈问题。就是求一下Cantalan数的第n项。由于比较大,可以采用质因子分解统计贡献来计算。#include<bits/stdc++.h>#define N 2000003#define LL long longusing namespace std;LL prime[N], pd[N], num[N], mp[...原创 2019-07-21 16:40:20 · 212 阅读 · 0 评论 -
【BZOJ 4403】序列统计
1.题目链接。比较简洁的题意,其实题目也不难。首先总共会有R-L+1=m个数可以选择,我们假设当前序列的长度为k,那么每种数选择的数量是x_i则有: 就是求一下这个序列的非负整数解有多少个,显然有C(m+k-1,m-1)。然后答案就是:...原创 2019-07-21 16:18:49 · 138 阅读 · 0 评论 -
【BZOJ 1431】
1.题目链接。找一下规律,其实上下基本上是对称的,所以只需要考虑下半部分最小就好了。#include<bits/stdc++.h>using namespace std;int main(){ int n, k; while (cin >> n >> k) { if (n == 1) { cout << 1 <&...原创 2019-07-21 15:01:37 · 134 阅读 · 0 评论 -
【BZOJ 4260】Codechef REBXOR
1.题目链接。给定一个数组,找出两个不相交的区间,得这两个区间元素异或和加起来最大。2.首先第一个需要解决的问题是:如何找出n个数里,找一个区间他们异或和最大。解决这个问题其实不难,DP[i]表示前i个数异或起来最大,然后我们做一个前缀异或和,然后在更新DP时,顺序插入字典树,在第i个位置时,这里的转移:DP[i]=max(DP[i-1),query(pre[i]).这里不难理解,因为前缀异或...原创 2019-07-12 12:50:21 · 256 阅读 · 0 评论 -
【BZOJ 1030】文本生成器
1.题目链接。给定n个字符串,让你构造一个由m个字符组成的字符串并且至少包含前n个字符串中的一个,有多少种构造方案。2.首先是一个多模式匹配的问题,对输入的字符串建立AC自动机,然后开始DP。由于正面考虑有很多种情况,我们发面考虑,不含他们中的任意一个。dp[i][j]:考虑第i位字符当前位置在AC自动机上的第j个节点时,不包含任意一个字符串的方案书。然后向i+1转移,转移时,我们需要枚举j的...原创 2019-07-16 11:20:45 · 134 阅读 · 0 评论 -
【BZOJ3944】积性函数求和
tls推导的很清楚了。我就不用画蛇添足。给出实现的代码:#include<iostream>#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cctype>#include <algori...原创 2019-02-02 21:18:45 · 143 阅读 · 0 评论 -
【bzoj4917】杜教筛
1.杜教筛推到一下即可,就会发现是卷积出来的函数是平方的前缀和,杜教筛的板子拿出来A了。#include<bits/stdc++.h>#include<iostream>#include <cstdio>#include <map>#pragma warning(disable:4996)#define N 1000010#defi...原创 2019-03-08 15:53:35 · 221 阅读 · 0 评论 -
【bzoj1218】二维前缀和
1.题目链接。我们考虑以(x,y)为右下角,(1,1)为左上角的这个矩阵里面所有价值和,统计这样的前缀和,然后枚举即可。#include<bits/stdc++.h>using namespace std;const int N = 6000;#pragma warning(disable:4996)int n, r, sum[N][N];int main(){ s...原创 2019-03-25 19:22:27 · 161 阅读 · 0 评论 -
【BZOJ 3884】拓展欧拉定理
1.题目链接。看到这个题目就觉得自己是个沙雕,省赛的时候上来看到这个类似的题目我就记得我做过,或者在哪看过来着。但是死活没有想起来,最后回来写这个题的时候弄了好半天。当时有点紧张了。忘了一些东西。2.我们知道,对于取模当gcd(a,mod)=1的时候我们可以直接在指数上取模,但是当gcd(a,mod)!=1的时候,我们也是可以继续取模的。这个东西叫做拓展欧拉定理。...原创 2019-04-17 16:37:19 · 174 阅读 · 0 评论 -
【BZOJ 4804】欧拉心算
1.题目链接。应该说有一段时间莫得写数论了。今天写了模板题。2.分析:直接推导,可以有两种方式。比较暴力的方式:(1) 对于后边那个式子,我们知道他就是欧拉函数的前缀和,然后可以继续: 求欧拉函数前缀和之后分块即可。/******...原创 2019-05-29 21:29:41 · 338 阅读 · 0 评论 -
【BZOJ 4589】Hard Nim
1.题目链接。给定N,M.求小于等于M的所有素数做N次异或卷积后为0的方案数。2.都说是FWT裸题,但是没有看的很懂。暂时先当个模板用一下吧。#include<bits/stdc++.h>using namespace std;#pragma warning(disable:4996);const int maxm = 200005;const int mod = 1...原创 2019-06-13 18:44:27 · 139 阅读 · 0 评论 -
【BZOJ 1001】狼抓兔子
1.题目链接。给定一个网格图,求这个网格图从左上角(1,1)到右下角(n,m)的最大流。裸题。#include<bits/stdc++.h>#include<queue>using namespace std;typedef long long LL;const int MAXM = 6000011;const int MAXN = 1000011;int...原创 2019-06-04 10:23:36 · 144 阅读 · 0 评论 -
【BZOJ 1012】最大数maxnumber
1.题目链接。这个题目是很特殊的,因为插入点在数组的末尾,所以可以用树状数组维护区间最值。树状数组维护区间最值也只有在这种情况下成立。就是在数组的末尾插入的时候。对于每个点我们维护[x-lowbit(x)+1,x]这个区间的最值。然后对于区间[l,r]的查询,我们把它分割成几个小的区间.在每个区间求最值之后合并,即可得到答案。#include <bits/stdc++.h>us...原创 2019-06-04 11:17:38 · 239 阅读 · 0 评论 -
【BZOJ 1211】树的计数
1.题目链接。这里面细节挺多的,首先公式是:(n-2)!/(d1-1)!/(d2-1)!....其中d是每个点的度数。至于怎么得到的,是根据无根树的Prufer序得到的,不懂得可以自行学习,挺简单的。就是一种把无根树映射到唯一的一个序列,有一种拓扑排序的思想,但是这个序列对于一个确定的无根树是唯一的,就像身份证号一样。知道了这些,在在计算组合数的时候,还是要处理一下,采用质因子分解计算。#i...原创 2019-06-16 00:08:53 · 198 阅读 · 0 评论 -
【BZOJ 1005】明明的烦恼
1.题目链接。和BZOJ 1211类似,但是这只是给出了部分点的度数,其实是一样的,因为序列的程度是n-2.假设我们已经知道了有cnt个点的度数,那么这每个点一定会在Prufer序列中出现的d[i]-1次。所有n-2个位置就会被占据sum(di-1)个。那么我们首先在这n-2个位置中选出sum个:C(n-2,sum).然后这sum个数做排列,多重集合的排列,之前说过。排列好之后,剩下n-cnt个点...原创 2019-06-16 14:00:48 · 180 阅读 · 0 评论 -
【BZOJ 1041】圆上整点
1.题目链接。给定半径,找一下这个圆上有多少个整点。其实也就是格点。2.这个题目其实是比较有意思的,做法也有很多种。比较常规的解法是: 到这里其实就好办了,因为x是一个平方数,A,B互质,所以A,B也应该是一个平方数。...原创 2019-06-22 13:39:38 · 846 阅读 · 0 评论 -
BZOJ_1036
题目链接。题目的大意就是在树上修改和查询相关的信息。看到这个其实我们很容易的想到线段树,如果是在数组上也就是线性结构中实现这些操作,其实很简单,就是线段树的基本功能。但是由于数据的的形式的组织的改变,使得线段树不能再直接的使用。那么如何在树上完成这些操作呢?其实思考问题都是有这样的一个过程:将未知转化为已知。我么知道支持修改和查询,线段是是一个很好的工具。所以我们会有一个很原始的想法,能不能继...原创 2018-11-27 20:55:22 · 171 阅读 · 0 评论