
bzoj
文章平均质量分 77
Leo_Riddle
AFO
展开
-
bzoj P1031 [JSOI2007]字符加密Cipher
传送门我果然是菜啊,调个裸sa竟然调了一个晚上。。这题就是普通处理环,把原串复制一遍,做一遍sa就行了。代码:#include#include#includeusing namespace std;const int Maxn=200005;char s[Maxn];int n,m=256;int sa[Maxn],tp[Maxn],tax[Maxn],rank[原创 2017-07-10 20:39:54 · 357 阅读 · 0 评论 -
bzoj P1042 [HAOI2008]硬币购物
传送门这道题算我写的第一道容斥原理。大概了解了容斥原理的思想。首先这题要求付款方案数,一道计数问题,然后我们就可以用容斥原理玩转的求一些计数问题。我们考虑先dp,设F[i]为不考虑每种硬币的数量限制的情况下,得到面值i的方案数。然后上容斥原理我们可以考虑用不考虑限制的方案数减去超过限制的方案数。再考虑怎么求超过限制的方案数,我们发现由容斥原理有:任意超过限制=1超过限制+2超过限制原创 2017-07-22 01:27:50 · 334 阅读 · 0 评论 -
bzoj P2560 串珠子
传送门第一道子集dp。(感觉很像状压dp。。好弱啊我看了好多大神的博客才勉强看懂g[s]表示s状态下的所有情况,即s状态下的点两两之间任意连边(包括不连边),f[s]表示s状态下的合法情况(所有点连通)。那么我们就可以那全集剪去不合法的子集。全集就是f[i]=f[i]*(a[j][k]+1)那么怎么求不合法的子集呢?我们任取一个点(任取二进制中的一个1)来枚举,可以原创 2017-07-22 01:50:33 · 518 阅读 · 0 评论 -
bzoj P4033 [HAOI2015]树上染色
传送门这道题很妙啊。反正我是想不出来。。首先有一个很容易想到的状态,设f[i][j]表示子树为i,i涂了j个节点的距离和。嗯这个还是能想到的,然后考虑转移,然后就被虐成zz了。。分析子树i与儿子所连边的贡献,可以发现这条边的贡献等于他左右两边同色点数乘积和(左黑点数*右黑点数+左白点数*右白点数)。于是我们发现可以进行转移了,就是一个树形dp,f[x][j]=max(f[x][j]原创 2017-07-19 01:22:09 · 422 阅读 · 0 评论 -
bzoj P4027 [HEOI2015]兔子与樱花
传送门好吧这题我也没想出来。我果然是个zz。。很妙的贪心,(其实我也知道贪心,但是姿势不对),我们观察数据nTIP:遇到树一类的思博题,我们要对子树分析,观察数据范围以及询问的ans的特点(要想到树上dp或贪心或用数据结构·维护dfs序)。贪心也要尝试猜一些结论。代码:#include#include#include#includeusing namespace std原创 2017-07-19 01:42:14 · 414 阅读 · 0 评论 -
洛谷 P2178 品酒大会(bzoj P4199 [Noi2015]品酒大会/uoj P131【NOI2015】品酒大会)
传送门这道题一看就是一种非常恶心的感觉,事实的确如此恶心到我饭都吃不下去。。我恐怕真的不适合这个竞赛。。这道题我想的是sa+单调栈然后全世界都比我快,全世界都用的是并查集。。好吧说下zz的做法:首先我们想想求lcp的过程两个后缀的lcp=rmq min height(i,j),那么我们考虑height[i]并维护一个单调递增栈,如果height[i]i)没有贡献那么就弹出,只要原创 2017-07-16 20:19:42 · 594 阅读 · 0 评论 -
bzoj P3172 [Tjoi2013]单词
做完这道题终于知道了什么叫做绝望。。首先,这道题的读入坑到我wa了一页,然后这道题的读入坑了我一晚上,最后这道题的读入吧我玩废了。。用血写出来的经验最后一个字符要赋'\0'。。好了说说这道题后缀数组的做法:把每个单词拼在一起中间由分隔符分开然后做一遍后缀数组,观察sa数组,容易发现如果一个单词包括另一个单词显然要有height[i]大于等于这个单词,如果height[i]小于这单词原创 2017-07-12 14:04:24 · 363 阅读 · 0 评论 -
洛谷 P1169 [ZJOI2007]棋盘制作(bzoj P1057 [ZJOI2007]棋盘制作)
学习一发悬线法,但是好像出了点意外的事,在洛谷上A了却在BZOJ上炸了然后和标解拍了没问题。。有毒!!悬线法:设line[i][j]表示[i][j]位置向上的最大悬线(就是到障碍点的最大长度),fx[i][j]表示[i][j]位置悬线向左最大能移动距离,fy[i][j]表示[i][j]位置悬线向右最大能移动距离。怎么求fx和fy呢??如果悬线长度为1那么就是这个位置向左或向右达到障碍的距离原创 2017-07-07 10:50:39 · 399 阅读 · 0 评论 -
bzoj P1036 [ZJOI2008]树的统计Count
传送门嗯,一道裸裸的树剖。代码:#include#includeusing namespace std;const int Maxn=30005;const int oo=2147483647;struct segment{int v,next;}e[Maxn*2];struct Qtree{int l,r,mx,sum;}t[Maxn*4];int size[Max原创 2017-07-31 00:13:49 · 471 阅读 · 0 评论 -
bzoj P4034 [HAOI2015]树上操作
传送门这道题树剖也蛮裸的,观察一下下标数组我们发现每一棵子树在线段树的下标肯定是连续的,想想dfs的过程就知道了,然后我们就能用树剖维护子树了。通过这题我们也知道了树剖不仅能维护链,也能维护子树。这题也有更高超的方法,用线段树维护dfs序,对于dfs序中出现的节点我们一个取正一个取负,就可以直接上线段树了。树剖代码:#include#include#includeusin原创 2017-07-31 01:07:01 · 489 阅读 · 0 评论 -
bzoj P3195 [Jxoi2012]奇怪的道路
传送门这道题好难啊,不会(这个菜鸡博主什么都不会这道题就是状压dp啦(跟主旋律那题一样都是图的状压dp都是以点作状态压缩,那到题是枚举图的点的集合(子集dp),这道题是枚举点的奇偶性)说一下dp方程式,设F[i][j][s][l]表示枚举到第i个点,用了j条边,(由i-k~i的点的出度奇偶性组成的状态)s,与第l条边相连(注意这重状态不能省去,要不然会算重(连边顺序不同也算一种方案))原创 2017-07-22 01:09:45 · 379 阅读 · 0 评论 -
bzoj P4870 [Shoi2017]组合数问题
传送门炒鸡强的dp啊,原来组合题还可以这么做,用组合的意义来dp,只做过用组合优化dp。我们考虑一下那个式子的意义:nk个东西中取r个的方案数+nk个东西取k+r个的方案数+nk个东西取2k+r个的方案数+...然后进一步转化问题:从nk个物品里选取膜k余r个物品的方案数。那么怎么求这个问题呢?很容易能想到一个简单的dp,设f[i][j]表示前i个物品取了膜k余j的方案数,原创 2017-07-31 01:31:02 · 574 阅读 · 0 评论 -
bzoj P1072 [SCOI2007]排列perm
传送门果然一遇到dp就瞬间失去了思考能力。。整没看出来这是状压dp,思路也很不错。我们可以发现s长度很短,所以很容易想到状压来枚举,我们枚举一些数字是否使用,用状压记录一下,也就是设f[s][i]表示状态为s的膜d为i的方案数,然后通过枚举下一位转移。怎么转移呢?我们枚举了模数所以新添的一位就可以直接加上枚举的模数再膜就是新添一位后的新膜数f[i^(1注意:我们这里算的是组原创 2017-07-31 00:37:48 · 397 阅读 · 0 评论 -
洛谷 P1896 [SCOI2005]互不侵犯King(bzoj P1087 [SCOI2005]互不侵犯King)
传送门虽然水题一道但是还是调了很长时间,最近做题状态很差啊,很迷。。状压dp,比较简单没什么优化,把每一行作状态记录,所以跑了32ms(orz 0ms大神),设f[i][j][k]表示第i行状态为j用了k个皇的方案数,然后有一个很弱智的优化,把可行的状态处理出来,这里的可行是指上下行不斥每一行中的方格彼此不斥的状态。然后就有f[i][j][k]=f[i-1][l][k-cnt[j]](原创 2017-07-11 00:39:22 · 370 阅读 · 0 评论 -
洛谷 P2324 [SCOI2005]骑士精神
传送门开始怼网络流24题所以发的比较晚,学习一下A*搜索,A*其实就是加入评估函数对有限步数或能估价有效的剪枝,对于A*一般只有dfs(bfs被成为最愚蠢的A*)。这题的估价函数:当前棋盘与目标棋盘不同的位置数量-1(评估函数是当前状态到目标状态的距离),所以就有:当前不相同的骑士个数 + 当前步数 若不满足就剪枝代码:#include#includeusing n原创 2017-07-13 00:24:00 · 439 阅读 · 0 评论 -
洛谷 P3745 [六省联考2017]期末考试(bzoj P4868 [Shoi2017]期末考试)
传送门很妙啊,一开始只想着贪心。看了题解才知道三分。因为每个学生都必须知道自己的所有排名,所以只要结束时间固定那么就能o(n)算出所需价值,再看这个函数,老师不满意度是一条单调上升的曲线;学生则是下降;那门合成两条线一定是一条二次函数的并属于0到正无穷的单峰曲线(凸函数),于是三分结束时间就可以了注意:此题有一个超坑的地方c有可能等于1e16那么肯定不能让学生不满意,所以只要让结束原创 2017-07-13 10:57:10 · 994 阅读 · 0 评论 -
bzoj P1925 地精部落
传送门很妙的dp,状态设出来了方程没推出来(博主果然菜)设f[i][j]表示前i个数第一个数为[1,j]且第一个数降序的方案数,然后有f[i][j]=f[i][j-1]+f[i-1][i-j]解释一下,我们显然知道f[i][j-1](前i个数第一个数为[1,j-1]且第一个数降序的方案数),那么只要求前i个数第一个数为j且第一个数降序的方案数,考虑第1个数为j且降序则第二个数小于j原创 2017-07-04 20:23:33 · 387 阅读 · 0 评论 -
洛谷 P3338 [ZJOI2014]力(bzoj P3527 [ZJOI2014]力)
传送门很难受,不会输公式,于是手写了一份,比较丑,希望不要介意。fft的套路果然深。。照着网上模板学习了一下。。代码:#include#include#include#include using namespace std;const int Maxn=1000005;int n,N,L;int rev[Maxn];int dig[Maxn];double p原创 2017-07-14 15:43:38 · 521 阅读 · 0 评论 -
洛谷 P3723 [AH/HNOI2017]礼物(bzoj P4827 [Hnoi2017]礼物)
当初省选时看这题一脸懵逼,打了70分的代码事实满分还是很容易的(啪啪啪,自己wa了十次还说容易??好了说下题解吧,这题就是求循环卷积,我的代码是0~n-1,式子是1~n(主要是博主FFT习惯写0~n-1),照样发图片(博主太蠢,不会输数学公式。。)注意:比较大小时的精度!!!在这里wa了10次!!!Tips:round()四舍五入函数代码:#include#include原创 2017-07-15 00:26:52 · 570 阅读 · 0 评论 -
洛谷 P3773 [CTSC2017]吉夫特(bzoj P4903 [CTSC2017]吉夫特/uoj P300【CTSC2017】吉夫特)
传送门昨天写的,额这题应该算ctsc2017最水的了吧,连我都会。这题一看组合数取模直接上lucas定理啊,知道lucas的应该都A了吧。。还有那个样例提示的太明显了吧。。还有不是很懂网上为什么有人要用exlucas,2难道不是质数??然后就是肯定都是组合数膜2都是1,根据lucas定理每一个组合数最后肯定都化成了c(1,1)或c(1,0)或c(0,1)或c(0,0),然后c(1,原创 2017-07-16 19:28:20 · 1014 阅读 · 0 评论 -
洛谷 P3478 [POI2008]STA-Station(bzoj P1131 [POI2008]STA-Station)
传送门这题必须要吐槽!!!首先树形dp先求以1为根的深度和,然后由父亲节点转移到儿子节点,也就是除了儿子节点以下包括儿子节点的其他节点深度减1,儿子节点以下包括儿子节点的其他节点深度加一(画个图很容易看出,实在不行看popoqqq的博客,解释的很清楚),然后o(1)转移。状态转移方程:f[x]=f[fa[x]]+n-2*son[x],son[x]就是x节点包括自己的所有儿子节点个数,f原创 2017-07-07 22:17:50 · 513 阅读 · 0 评论 -
洛谷 P2023 [AHOI2009]维护序列(bzoj P1798 [Ahoi2009]Seq 维护序列seq)
传送门前天看到这道题觉得线段树水过,准备敲一敲分块。然后就没有然后了wa了十发。今天看到就顺手水了水。。最近被拓展lucas和ahoi2017玩废,我恐怕就是一只咸鱼了。。注意标记下传要加法标记要先乘再加,然后就没什么了。代码:#include#include#define ll long longusing namespace std;const int Maxn=1原创 2017-07-09 21:02:55 · 376 阅读 · 0 评论 -
bzoj P3531 [Sdoi2014]旅行
传送门这道题学到了动态开空间线段树的写法,感觉跟主席树有一定的类似。说一下怎么动态开吧。首先回忆一下线段树的过程,我们发现对于这题,每一颗线段树都有很多的子结点是0,也就是说这些节点都是没用的,所以我们考虑对于每一个非0叶子结点到根都是非0的,但是其他都是为0的,都是没有用的,那么为何要为它们开内存存储呢,所以我们换种方式存储对每一个节点都有一个编号,然后结构体内的l,r都是存的l原创 2017-07-31 00:56:50 · 422 阅读 · 0 评论