自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZigZagK的博客

Never give up fighting!

  • 博客(342)
  • 资源 (1)
  • 收藏
  • 关注

原创 【二分图最大独立集】BZOJ4808[马]题解

题目概述给出 n×mn\times m 的棋盘(有些位置有损坏),问最多能在其中放多少互不吃到的马(不能放在损坏位置中)。解题报告NOIP2017前的最后一题QAQ。首先将棋盘 0101 间隔染色,然后就成了二分图。由于要放最多的马,其实就是最大独立集。最大独立集 == 点数 −- 最小点覆盖 == 点数 −- 最大匹配。示例程序#include<cstdio>using namespace st

2017-11-10 21:40:15 368

原创 【桥】HDU4738[Caocao's Bridges]题

题目概述给出 nn 个点, mm 条边的无向图。求边权最小的桥。ps:这题有毒,当边权为 00 的时候要输出 11 ,图不连通时输出 00 。解题报告桥连接着两个边双联通分量,删去桥时整个图的连通块数会增加。求桥有两种方法:1.求出边双,不在边双中的就是桥。2.一条边 (x,y)(x,y) 是桥当且仅当 dfn[x]<low[y]dfn[x]<low[y] 。只求桥的时候采用后者较为方便。示例程序因

2017-11-10 16:43:12 322

原创 【期望DP】BZOJ1419[Red is good]题解

题目概述有 AA 张红牌, BB 张黑牌。现在将 A+BA+B 张牌打乱,每次翻牌。翻到红牌得到一元钱,翻到黑牌失去一元钱。可以随时停止翻牌,求在最优策略下得到钱数的期望。解题报告期望DP通用套路,倒着来。定义 f[i][j]f[i][j] 表示剩下 ii 张红牌, jj 张黑牌得到钱数的期望。那么 f[i][j]=ii+jf[i−1][j]+ji+jf[i][j−1]f[i][j]=\frac{i

2017-11-10 15:04:22 423

原创 【卡特兰数】BZOJ1856(Scoi2010)[字符串]题解

题目概述给出 n,mn,m ,若一个 0101 序列在任意位置满足 11 的个数大于 00 的个数,则该序列是满足条件的。求由 nn 个 00 , mm 个 11 组成的满足条件的序列个数。解题报告n=mn=m 的时候显然是卡特兰数, n>mn>m 其实和卡特兰数类似。先算出所有序列的个数,方案是 (n+mn)n+m\choose n ,然后算出不满足条件的序列个数。怎么算?将 11 看成向上走,

2017-11-10 11:23:29 312

原创 【组合+错排】BZOJ4517(Sdoi2016)[排列计数]题解

题目概述如果 ai=ia_i=i 则 ii 是稳定的。给出 n,mn,m ,求稳定数为 mm 的 nn 的排列的个数。解题报告其实很简单……先选出 mm 个稳定位置,然后另外 n−mn-m 强制不稳定。强制不稳定也就是 ai≠ia_i\not=i ,即错排。结果发现我并不记得错排了……于是去看了一下……读者老爷先看代码吧……我明天填坑……示例程序#include<cstdio>#include<c

2017-11-09 22:59:48 438

原创 【组合】Codeforces40E[Number Table]题解

题目概述有 n×mn\times m 的 1,−11,-1 矩阵,现在 k(0≤k<max{n,m})k(0\le k<max\{n,m\}) 个位置已经确定,求每行每列乘积均为 −1-1 的方案数。解题报告好题!注意到 0≤k<max{n,m}0\le k<max\{n,m\} ,所以至少有一行或一列是没有任何一个元素确定过了的。令 n>mn>m ,我们可以先把其他 n−1n-1 行确定下来(组合

2017-11-09 11:24:16 292

原创 【高维前缀和】Codeforces165E[Compatible Numbers]题解

题目概述给出序列 {an}\{a_n\} ,对于每个 ii ,输出任意一个满足 ai and aj=0a_i\ and\ a_j=0 的 aja_j 。解题报告这种东西马上想到高维前缀和求超集……不过只需要求任意解,所以更简单了……网上好像有用状压DP做的……我不清楚……(高维前缀和算状压吧QAQ?)示例程序#include<cstdio>#include<cctype>#include<cst

2017-11-06 15:05:42 354

原创 【DP】BZOJ1084(SCOI2005)[最大子矩阵]题解

题目概述有一个 n×mn\times m ( m≤2m\le 2 )的矩阵,选出其中 kk 个子矩阵,使得这 kk 个子矩阵分值之和最大。选出的 kk 个子矩阵不能相互重叠。解题报告因为只有两列……所以随便定义一下就行了。定义 f[i][s][k]f[i][s][k] 表示前 ii 行,第 ii 行的状态为 ss ,选了 kk 个子矩阵的最优解,状态有:00 :不选第 ii 行。11 :选第 i

2017-11-05 16:07:09 313

原创 【区间DP】POJ3280[Cheapest Palindrome]题解

题目概述给出 nn 个小写字母(有插入代价以及删除代价)以及长度为 mm 且只包含给出小写字母的字符串。插入和删除可以在任意位置进行,求最小代价使得该字符串变为回文串。解题报告千万不能想得太复杂……其实很简单……定义 f[i][j]f[i][j] 表示使原串中 [i,j][i,j] 变为回文串的最小代价,那么有三种策略:将 [i+1,j−1][i+1,j-1] 变为回文串,然后用最小代价使两端的

2017-11-04 16:51:53 198

原创 【区间DP】POJ2955[Brackets]题解

题目概述给出一个长度不超过 100100 的括号序列( ()[]()[] ),一个合法的括号序列要么是空序列,要么满足:如果 ss 是合法序列,则 (s),[s](s),[s] 也是合法序列。如果 x,yx,y 是合法序列,则 xyxy 也是合法序列。求给出括号序列的最长合法子序列的长度。解题报告显然是区间DP,定义 f[i][j]f[i][j] 表示 [i,j][i,j] 的最优解,那么根据

2017-11-04 13:32:30 521

原创 【数位DP】HDU3943[K-th Nya Number]题解

题目概述Nya数有 XX 个 44 和 YY 个 77 ( X,YX,Y 给出),求 (l,r](l,r] 中第 kk 小的Nya数。解题报告对于我这种英语盲……英文题面容易漏条件……题目要求 (l,r](l,r] 但是我看成 [l,r][l,r] ……定义 f[i][x][y]f[i][x][y] 表示选了 ii 位有 xx 个 44 , yy 个 77 的方案数。然后二分一下就行了。好像有非二分

2017-11-03 21:24:43 260

原创 【数位DP】HDU3652[B-number]题解

题目概述求 [1,n][1,n] 中含有 1313 且是 1313 的倍数的数的个数。解题报告因为在复习,所以水博客就做了一下。常用套路,定义 f[i][j][k]f[i][j][k] 表示放了 ii 位余数( mod 13mod\ 13 )为 jj 状态为 kk 的方案数( 00 :没有 1313 ; 11 :没有 1313 ,目前高位是 11 ; 22 :有 1313 ),然后直接记忆化DFS就

2017-11-03 20:33:15 347

原创 【DP】RQNOJ107[Ural的鹰蛋实验]题解

题目概述经典的鹰蛋问题,就因为懒所以不写了。解题报告不知道大家第一想法是不是二维DP,反正我不是……2015年,当我还是普及组大菜鸡(现在是提高组大菜鸡)时,我看到了这道题。然后根本不会,直到教练下发题解……题解上是……没错……区间DP f[L][R][egg]f[L][R][egg] ……(黑历史完……)显然所有区间都是等价的,唯一重要的是区间长度,所以可

2017-11-02 21:51:43 505 2

原创 NOIP2017考前复习

蒟蒻复习ing,仅供参考

2017-11-02 16:36:51 515

原创 【单调队列】BZOJ1047(HAOI2007)[理想的正方形]题解

题目概述有一个 a×ba\times b 的整数组成的矩阵,从中找出一个 n×nn\times n 的正方形区域,使得该区域所有数中的最大值和最小值的差最小。解题报告水博客……解法很多,可以二维ST表,线段树套线段树(雾)……O(n)O(n) 解法好……先按照行做单调队列预处理出每个点向左推 nn 个的极值,然后按照列做单调队列求出每个点向上向右推 nn 个的极值就行了。示例程序#include<c

2017-11-01 22:25:44 286

原创 【背包+容斥】BZOJ1042(HAOI2008)[硬币购物]题解

题目概述有 4​4​ 种硬币。面值分别为 c1​c_1​ , c2​c_2​ , c3​c_3​ , c4​c_4​ 。某人去商店买东西,去了 tot​tot​ 次。每次带 di​d_i​ 枚 ci​c_i​ 硬币,买 si​s_i​ 的价值的东西。请问每次有多少种付款方法。解题报告直接背包会TLE,但由于只有 44 种硬币,所以……所以好难啊!根据容斥,答案为:价值恰好为 ss 但硬币数不受限制的

2017-10-31 10:05:46 265

原创 【估计】BZOJ1011(HNOI2008)[遥远的行星]题解

题目概述直线上 nn 颗行星, X=iX=i 处有行星 ii ,行星 jj 受到行星 ii 的作用力,当且仅当 i≤A×ji\le A\times j 。此时 jj 受到作用力的大小为 Fi→j=Mi∗Mjj−iF_{i\to j}={M_i*M_j\over j-i} 其中 AA 为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用。请计算每颗行星的受力,只要结果的相对误差不超过5%即可.

2017-10-30 15:09:16 2013 1

原创 【wqs二分+最小生成树】BZOJ2654[tree]题解

题目概述给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有 KK 条白色边的生成树。解题报告可怕的题目……首先我们可以先求出一棵最小生成树,但是不一定满足 KK 条白色边。这怎么办呢?容易想到提高(降低)白色边的优先级,从而多选(少选)白色边。于是我们可以将白色边的边权全加上 midmid (这样白色边之间的优先级保持不变),然后重新求最小生成树,如果满足要求说明 midmid 可

2017-10-30 14:24:53 584

原创 【Prufer编码+组合】BZOJ1005(HNOI2008)[明明的烦恼]题解

题目概述有 nn 个点,每个点的度数为 did_i (若 di=−1d_i=-1 则度数没有限制),求满足条件的树的个数。解题报告根本不会做好吗!首先介绍一下Prufer编码:树 →\to Prufer编码 找到编号最小的度为 11 的节点,删除该点及连接该点的边,将与该点相邻的点加入数列。重复删除/加入,直到剩下两个节点,最后的数列就是Prufer编码(长度为 n−2n-2 )。Prufe

2017-10-29 18:48:06 303 1

原创 【分数规划-最大比例环】POJ3621[Sightseeing Cows]题解

题目概述给出 nn 个点, mm 条单向边。每个点有点权 wiw_i ,每条边有边权 tit_i 。求点权比边权最大的环。解题报告在POJ做分数题简直就是作死,可以WA到飞起来,还是分数规划裸题(搞事啊,为什裸题我现在才做过啊),二分枚举答案 midmid ,然后用新边权 wx−mid×t(x,y)w_x-mid\times t(x,y) 建边。只要存在一个环的边权和大于等于 00 ,就说明验证成功

2017-10-29 12:57:45 702

原创 【DP】51Nod1354[选数字]题解

题目概述给出 nn 个数和 KK ,选出 nn 个数中若干个数使得乘积恰好为 KK ,求方案数。解题报告我太菜了,都是JZdalao教我题目的……刚开始我想拆分素因子然后背包……发现直接爆炸。实际上我们预处理出 K​K​ 的因子,然后定义 f[i][j]​f[i][j]​ 表示前 i​i​ 个数组成 K​K​ 的第 j​j​ 个因子的方案数(将因子由小到大排序)就可以了。至于确定因子标号,我用了二分

2017-10-28 21:19:15 258

原创 【分数规划-最小比例生成树】POJ2728[Desert King]题解

题目概述给出 nn 个点 (x,y,z)(x,y,z) ,两个点 i,ji,j 之间的距离为 (xi−xj)2+(yi−yj)2−−−−−−−−−−−−−−−−−√\sqrt{(x_i-x_j)^2+(y_i-y_j)^2} ,代价为 |zi−zj||z_i-z_j| ,求代价与距离比例最小的生成树。解题报告也是分数规划的经典题目(搞事啊,为什么经典题目我现在才知道啊),首先二分枚举答案 midmi

2017-10-28 20:52:55 315

原创 【分数规划】POJ2976[Dropping tests]题解

题目概述给出 nn 个物品,有 a,ba,b 两个权值,现在要选 kk 个物品,使得 ∑ki=1ai∑ki=1bi\sum_{i=1}^{k}a_i\over \sum_{i=1}^{k}b_i 最大。解题报告分数规划裸题,二分一个答案 midmid ,然后需要验证 ∑ki=1ai∑ki=1bi≥mid{\sum_{i=1}^{k}a_i\over \sum_{i=1}^{k}b_i}\ge mid

2017-10-28 18:25:35 302

原创 【思维】AtCoder Grand Contest(013)C[Ants on a Circle]题解

题目概述有 nn 只蚂蚁在长度为 LL 的环上的不同位置(位置按编号递增),蚂蚁相撞会立刻转向,求最后每只蚂蚁的位置。解题报告栽了不知道多少次的题目……首先老套路,蚂蚁相撞看作穿过,最后相对位置不变。但是环是什么鬼?想一下发现其实就是让我们确定某一只蚂蚁,从而确定所有的蚂蚁。方便起见,我们用第一只蚂蚁来分析。刚开始,第一只蚂蚁位置最靠前,如果没有任何一只蚂蚁走过了临界点 00 ,则第一只蚂蚁将一直最

2017-10-28 16:26:20 353

原创 【折半搜索】BZOJ2679(Usaco2012 Open)[Balanced Cow Subsets]题解

题目概述给出 nn 个数( n≤20n\le 20 ),现在从中选出若干个数(不可不选),若这若干个数能分成两个加和相等的集合,则是一种合法方案。求合法方案数。解题报告如果直接枚举,状态有 3203^{20} ,显然是不行的。但如果已知一些数的状态,再枚举其他数的状态,是可以快速统计的。所以考虑折半搜索。但由于是选出若干个数,问这些数是否有合法方案,所以需要记录每种方案的状态,否则会算重复。我秉承不

2017-10-27 19:37:05 436

原创 【最小割Dinic】BZOJ1163(Baltic2008)[Mafia]题解

题目概述有 nn 个车站, mm 条双向边,封闭 ii 车站的代价为 cic_i ,现在可以封闭若干个车站,求使得 ss 无法到 tt 的最小代价。解题报告裸的最小割问题……先拆点,然后刷最大流就行了……示例程序#include<cstdio>#include<cstring>#include<algorithm>#define fr first#define sc second#defi

2017-10-27 15:23:21 234

原创 【Lucas定理+高维前缀和】2017.10.26杂题[虚妄之诺]题解

题目概述写到一半电脑重启了,不想写了。解题报告神题……我自己根本想不出来。首先观察一个深度为 depdep 节点(以 dep=4dep=4 为例),发现贡献是这样的:x=0:1 1 1 1 1x=1:1 2 3 4 5x=2:1 3 6 10 15x=3:1 4 10 20 35x=4:1 5 15 35 70x=5:................WTF?杨辉三

2017-10-26 08:16:40 387

原创 【高维前缀和】SPOJ(TLE)[Time Limit Exceeded]题解

题目概述题目名称要不要这么奇葩而且和题面没有半毛钱关系啊,我上交题目都以为自己TLE了。给出 nn 个数 cic_i ,现在需要构造 aia_i 使得:ai mod ci>0a_i\ mod\ c_i>0 。ai and ai+1=0a_i\ and\ a_{i+1}=0 。解题报告先不考虑 cic_i ,那么我们很容易想到DP: f[i][j]f[i][j] 表示前 ii 个数第 ii 个是

2017-10-25 18:50:26 606 2

原创 【剩余类+贪心+DP】Codeforces571B[Minimization]题解

题目概述给出 nn 个数和 KK ,现在需要将 nn 个数组成序列,求 ∑n−Ki=1|Ai−Ai+K|\sum_{i=1}^{n-K}|A_i-A_{i+K}| 的最小值。解题报告+K+K ……想到剩余类,这样的话 nn 个数就只有 KK 个剩余类。同时观察到这些剩余类的个数只有 ⌊n−1k⌋\lfloor{n-1\over k}\rfloor 和 ⌊n−1k⌋+1\lfloor{n-1\over

2017-10-25 15:05:45 310

原创 【DP】Codeforces762D[Maximum path]题解

题目概述给出 3×n3\times n 的带权网格,从 (0,1)(0,1) 开始走,一个格子只能走到相邻(上下左右)格子且不能被重复走,求到 (2,n)(2,n) 的最大权值。解题报告我们会发现如果回头走了两个格子,一定可以被回头走了一个格子(或不回头)的方案替换掉。所以我们只需要考虑回头走了一个格子。考虑DP,定义 f[0/1/2/3][j]f[0/1/2/3][j] 表示第 jj 列走完,目前

2017-10-25 11:36:19 329

原创 【two-pointer】Codeforces762C[Two strings]题解

题目概述给出两个串 A,BA,B ,现在需要删除 BB 中的一个子串使删除后的 BB 是 AA 的子序列。求删除最少的方案。解题报告枚举 pre,sufpre,suf 表示删除 [pre+1,suf−1][pre+1,suf-1] ,记录 MIN(pre)MIN(pre) 表示使 BB 前 prepre 个是 AA 前 MINMIN 个的子序列的最小 MINMIN ,同理记录最大的 MAX(suf)

2017-10-25 10:50:56 406

原创 【高维前缀和+容斥】Codeforces449D[Jzzhu and Numbers]题解

题目概述有 nn 个数 aia_i ,求选出若干个数(不可不选) andand 起来为 00 的方案数。解题报告把每个数在二进制下的 0101 序列看作集合,那么题目转化为选出一些集合交集为空的方案数。然后……完全不会做啊……然后考虑容斥,令 f(i)f(i) 表示包含集合 ii 的数的个数, S(i)S(i) 表示集合 ii 的元素个数,考虑容斥,那么答案就是 ∑220−1i

2017-10-24 21:12:47 302

原创 【Lucas定理】BZOJ4403[序列统计]题解

题目概述给定三个正整数 N,L,RN,L,R ,统计长度在 11 到 NN 之间,元素大小都在 LL 到 RR 之间的单调不降序列的数量。输出答案对 106+310^6+3 取模的结果。解题报告先考虑长度为 nn 方案数。假设现在选好了 nn 个数,那么序列是确定的(相同不算),所以直接插板法就可以了,令 m=R−L+1m=R-L+1 ,则方案数就是 (m+n−1m−1)m+n-1\choose m

2017-10-24 16:30:30 345

原创 【Lucas定理】洛谷1869[愚蠢的组合数]题解

题目概述求 (xy​)x\choose y​ 的奇偶性。解题报告实际上就是求 (xy) mod 2{x\choose y}\ mod\ 2 ,但是 xx 和 yy 太大了。所以要用到Lucas定理: (xy)=(x mod py mod p)×⎛⎝⌊xp⌋⌊yp⌋⎞⎠{x\choose y}={x\ mod\ p\choose y\ mod\ p}\times {\lfloor{x\over p

2017-10-24 15:50:38 469

原创 【DFS】NOIP2014Day1T2[联合权值]题解

解题报告我刚开始竟然天真的只想到了 xx 和 fa(fa(x))fa(fa(x)) 的情况……全国联赛要狗带了……好像有个很棒的公式可以使用: 2ab=(a+b)2−a2−b22(ab+ac+bc)=(a+b+c)2−a2−b2−c22(ab+ac+ad+bc+bd+cd)=(a+b+c+d)2−a2−b2−c2−d2⋯2ab=(a+b)^2-a^2-b^2\\2(ab+ac+bc)=(a+b

2017-10-23 20:05:52 298

原创 【DP】NOIP2015Day2T2[子串]题解

解题报告直接DP, f[i][j][k][0/1]f[i][j][k][0/1] 表示 AA 串前 ii 位匹配 BB 串 jj 位,拿出了 kk 个子串, ii 位没选/选了的方案数。好像有三维做法,但是我不会……示例程序#include<cstdio>#include<cstring>using namespace std;const int maxn=1000,maxm=200,MOD=

2017-10-23 19:06:06 268

原创 【剩余类+树状数组】2017.10.23杂题(liu_runda NOIP 联考 DAY1)[飞]题解

题目概述呵呵,写到一半重启了,没心情写题目概述。liu_runda NOIP 联考 DAY1 T3。解题报告先转化一下……如果某个点被 nn 条线段覆盖,则贡献为 n(n−1)2\frac{n(n-1)}{2} ,这个式子也可以理解为这 nn 条线段两两组合的方案数。所以鬼畜值(滑稽)之和其实就是能相交线段的个数。显然只有 {xi>xj|i<j}\{x_i>x_j|i<j\} 的线段才会产生贡献,这

2017-10-23 16:10:56 423

原创 【树的个数+容斥】2017.10.23杂题(liu_runda NOIP 联考 DAY1)[任]题解

题目概述呵呵,题目概述写到一半电脑重启了,没心情写了。liu_rundaNOIP 联考 DAY1 T2。解题报告没有多条简单路径就是树喽……那么这道题就是让你求一个子矩阵中树的个数。然后有个很显然的结论:森林中树的个数 == 节点数 −- 边数。于是容斥就行了。示例程序#include<cstdio>using namespace std;const int maxn=2000,maxm=200

2017-10-23 13:30:18 497

原创 【Tarjan】NOIP2015D1T2[信息传递]题解

解题报告这……为什么我不在那年考NOIP……这道题显然是求最小且不为 11 的最小环……示例程序#include<cstdio>#include<algorithm>using namespace std;const int maxn=200000;int n,E,lnk[maxn+5],nxt[maxn+5],son[maxn+5],ans;int ti,dfn[maxn+5],low[m

2017-10-22 20:00:42 385

原创 【AC自动机+DP】BZOJ1030(JSOI2007)[文本生成器]题解

题目概述如果一篇文章中至少包含给出 nn 个单词中的一个单词,那么我们说这篇文章是可读的。求长度为 mm 字符集只有 [A,Z][A,Z] 的文本中可读文本的数量。解题报告AC自动机+DP套路题……由于直接求可读文本比较困难,正难则反,我们求不可读文本的数目 ansans ,那么 26m−ans26^m-ans 就是答案。先将 nn 个模板串建成AC自动机,然后 f[i][j]f[i][j] 表示文

2017-10-22 18:56:54 326

2012年noi冬令营陈立杰讲稿

丽洁姐的后缀自动机讲解!

2017-07-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除