自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 贪心+哈夫曼树--bzoj4198[NOI2015]荷马史诗

传送门看到这个题一脸懵逼啊?难道是字符串?? 结果一看题解,是什么哈夫曼树(不会啊)这里留个坑···还没有十分了解哈夫曼树是啥 但是看样子好像就是一棵二叉树,每次将权值小的合并成新的点 新点权值是原来的和 这个背景好像很裸???Huffman树之所以可以保证合法性,是因为加入了许多虚拟结点,保证了一定不会有一个是另一个前缀的情况,考虑一个结点到根结点的路径上的所有点一定都是虚拟...

2018-07-31 01:30:40 205

原创 数位dp--bzoj4521: [Cqoi2016]手机号码

传送门一向不擅长数位dp··· 但是做了几道题以后发现,数位dp其实都是一个套路!!!我们先来总结一下数位dp的常规套路: 1、用前缀和思想,求区间l~r变成求1~r的减去1~l-1的 2、预处理出第i位数字为j的合法情况 3、dp状态设计,一般一定有两维i,j表示第i位填了j,后面可根据题目限制条件添加其他维,一般添加的都是一些二进制或三进制的数,表示有没有用过哪个数,或者哪...

2018-07-30 17:22:26 129

原创 数位dp--[SCOI2009]windy数

bzoj1026数位dp常规题首先数位dp,常见套路就是前缀和思想,用ans(b)-ans(a-1)表示答案于是我们只要考虑从0到x的答案数位dp通常会给你一个很大的数字, 我们要先把它用数组存下来,再从高位到低位考虑每一位 从高位到低位考虑的过程中就有高位对低位的限制, 也就是不能超过x,如果高位的数字与x前几位相同,那么这一位就不能填超过x这一位的数字 除了高位对低...

2018-07-30 13:40:14 116

原创 状压dp+bfs--bzoj1556墓地秘密

传送门状压好题0.0 其实难点不是状压吧···应该是前面的预处理 要用到类似于spfa的bfs RE了无数回结果发现变量名定义重了mdzz首先说一下dp的状态定义,因为发现从i到j停下来多少次是取决于上一次撞到i的方向的所以首先想到了dp[i][j][k]表示以k方向撞到i这个机关后已经撞过的机关为j集合的最小步数但是我们可以发现这只和所有机关以及各个机关四周的四个格子有...

2018-07-30 12:01:24 296

原创 单调队列、RMQ--[HAOI2007]理想的正方形

传送门啊一看到这个题就想到了那个矩形的dp 但是时间复杂度好像不太够?? 有一个叫RMQ的算法,是求区间最值问题的 要是会的话这题就是裸题嘛(然而我不会 RMQ好像是基于倍增的??? 还是单调队列好··· 用stl好像常数比较大,不如手写求矩形区间最大值,可以先求出每行的区间最大值 将行缩成点,再用求出的行最大值求每列的最大值 定义rmx[i][j]是第i行j-n+1到...

2018-07-28 18:36:24 187

原创 倍增--luogu1081开车旅行

传送门倍增神题???? 细节超级多··· 其实思路很简单 对于每个点,A和B要开去的目的地是固定的,所以就想到了倍增 开三个倍增数组,t[i][j][k]代表k从i开车走2^j天走到的那个城市 f是A走的路程,g是B走的路程 0代表A,1代表B对于预处理,一开始怎么想怎么是n^2的 后来自己yy了一下觉得每次sort一下也行嘛! look!就像这样sort(a+i+...

2018-07-28 17:26:44 174

原创 二分图最大匹配--bzoj1059 [ZJOI2007]矩阵游戏

传送门一开始有一个错误的类似贪心的思路··· 其实是二分图求最大匹配 这种抽象建模的题看不出来真的要命啊但是一般二分图建模的套路就是这种涉及只有两种数字的可以表示行列关系的 这道题我们把黑色格子在的行和列连边 换行换列操作对图本身的最大匹配没有影响 所以直接原图跑匈牙利就好了#include<iostream>#include<cstdio>#in...

2018-07-27 01:12:43 165

原创 容斥+dfs--bzoj1853 [SCOI2010]幸运数字

传送门第一眼以为是数位dp 但看到要求只能有6和8并且对每位上的数没什么要求 于是想到容斥 ans=选1个-选2个的lcm+选3个的lcm··· 容斥的实现通常结合了dfs 先预处理出1-r范围内所有的真幸运数字 然后保留比r/2小的,也就是说比r/2大的都可以用这些来覆盖到 而且最后要从大到小排个序,使得lcm更快达到上界r 然后就是dfs啦,要记录当前是选几个,选到了哪里以...

2018-07-27 01:07:51 152

原创 记搜、最短路--NOIP2017 逛公园

luogu3953solution: 一开始看到的时候最短路计数的时候还疑惑了一下 因为之前做的只有最小生成树计数,图上路径计数怎么搞啊 然后感觉是类似搜索的东西可以搞一搞 忍不住看了下标签:记忆化搜索 嗷!原来这样 但是一开始定义的f数组是一维的只记录点 但是立马就发现这样不行了 因为一个点可能有多种路长 但是路长太长了没法记啊所以我们应该要记比最短路多出去的那一部分呀...

2018-07-24 11:54:35 432

原创 斜率优化--bzoj4709

根据题目可列出转移方程: f[i]=f[j-1]+s[i]*(sum[i]-sum[j]+1)^2 (s[i]==s[j]) 其中sum表示的是从1开始a[i]这个值出现了几次,f[i]就是从1开始到i的答案通过拆开移项,我们可以得到一个斜率优化的式子: f[j-1]+s[j](sum[j]-1)^2=2 s[i] * sum[i] (sum[j]-1)+f[i]-sum[i] s[...

2018-07-22 23:31:37 162

原创 斜率优化

yzy讲的斜率优化嘤!!! yzy学长太棒啦!!!要注意维护的到底是下凸壳还是上凸壳取决于斜率的正负和需要最大化还是最小化截距,计算的时候还要注意x和y的正负下面lyd的书上同一道题不同的数据范围或条件给了不同的做法1、luogu2356任务安排题目描述N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务。从时刻0开...

2018-07-22 00:24:47 425

原创 状压dp--NOI2015 寿司晚宴

题目描述为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴。小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴。在晚宴上,主办方为大家提供了n−1种不同的寿司,编号1,2,3,⋯,n-1,其中第种寿司的美味度为i+1(即寿司的美味度为从2到n)。现在小G和小W希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小G品尝的寿司种类中存在一种美味度为x的寿司,小...

2018-07-20 21:23:52 163

原创 状压dp--USACO2012 MAR Cows in a Skyscrape

题目大意: n 只奶牛坐电梯,每只奶牛重ci,电梯最大承重为W,问至少乘坐多少 次电梯才能使所有奶牛离开。每次乘坐时,电梯里奶牛总重不能超过电 梯最大承重 n<=20,1<=ci,w<=1e9solution: 注意到n 只有20,考虑使用状压DP f(S) 表示集合S 中的奶牛至少需要乘几次电梯 预处理集合S 中奶牛总重是否超过W,然后通过枚举子集的技巧进行转...

2018-07-19 21:49:17 254 2

原创 状压dp--NOIP2016 愤怒的小鸟

平面的第一象限上有n 个点(xi; yi),每次操作你可以指定任意的 a; b(a < 0) 并消除掉抛物线y = ax2 + bx 上的点,求最少多少次操作能 消除掉所有点 n<=18solution: 解法一: f[S] 表示消除集合S 中的点所需要的最少次数 每次可以枚举两个不在S 中的点得出一条抛物线,然后再算出这条抛物线能消除掉的所有点 设加入了这条抛物线消...

2018-07-19 21:45:07 189

原创 状压dp--USACO2008 NOV Mixed Up Cows

题目大意: 有n 头奶牛每头奶牛的编号为si,现在将它们排成一列,若任意两头相 邻的奶牛的编号相差超过K 则称这种排列是混乱的,求有多少种混乱的 排列n<=16 , si, K<=20000solution: 像这种n在10-20之间的很明显就是状压dp嘛! 令F[i][S] 表示当前排列以第i 头奶牛为结尾,已经排好了的奶牛的 集合为S 的方案数 转移时枚举一个...

2018-07-19 21:36:27 159

原创 贪心--CF645E

题目大意: 给定一个长度为n 的字符串S,你可以在字符串S 后再添加m 个字符, 使得新字符串T 所包含的不同的子序列数量尽量多。求最多的不同子序 列数量,答案模大质数solution: 设lasti 为字符i 上次出现的位置 当前这位应该填上lasti 最小的字符 设Fi 表示以第i 位结尾的新出现的不同子序列个数,Gi 为Fi 的前缀和 Fi = G[i-1] - G[las...

2018-07-18 21:40:15 125

原创 贪心、dfs--Codechef TKCONVEX

题目大意: n 根木棍长度分别为ai,现在想从中选出2k 根组成两个面积大于0 的 凸k 边形,请找出一组解或判断无解 2k<=n<=1000 , 3<=k<=10 , 1<=ai<=109k 条边成为一个凸多边形的充要条件是最长边小于其他边之和 将木棍按长度排序后,按上述条件可知可行解要么是两段不相交的 连续的子序列,要么是一个连续的长为2k 的...

2018-07-18 21:36:50 175

原创 贪心、树的重心--CF708C

题目大意: 给定一棵n 个结点的树,对于每个结点求出它是否能通过至多一次操 作,使其成为这棵树的重心。一次操作可以删去原树中一条边,然后再 连上任意一条边,要求操作后图仍是一棵n 个结点的树solution: 操作实际就是选择一个子树然后将其换个父亲 对于一个非重心结点u,它有且仅有一个儿子的子树大小大于n/2 贪心地从这个子树中找出一个尽量大且大小不超过n/2 的子树,使u成为它...

2018-07-18 20:26:15 398

原创 贪心+高斯消元线性基--[JLOI2015]装备购买

bzoj4004 luogu3265题目大意: n 件装备每件装备有m 件属性以及价格ci,属性可以用向量zi 表示, 现在想要购买尽量多的装备使得装备的属性向量线性无关,求最小代价solution: 属性要求满足拟阵条件 贪心维护一个线性基即可 O(n^2*m)拟阵这东西比较复杂···我们只需要知道它是满足贪心的就行了 线性基这东西也比较复杂···其实根本用不着,就是个...

2018-07-17 21:05:44 193

原创 贪心--CF403B

题目大意: 给定n 个数ai,以及大小为m 的质数集合bi. 定义f 函数:f(1) = 0. 令p 为s 的最小质因子,若p 不在b 中,则f(s) = f(s/p) + 1,否则f(s)=f(s/p)- 1 现在你可以对a 做任意次操作,每次操作可以选择一个r,使得 a1; a2;    ; ar 同除以g,g = GCD(a1; a2;···; ar),求通过操作后能得到的f(...

2018-07-17 20:08:01 142

原创 贪心--CF549B

题目大意: 有n 个人可能参加聚会,每个人参加聚会时会发短信给所有他认识的人 (包括他自己)。现在给定关系网(每个人认识哪些人,保证认识自己), 以及一个数列ai,请你给出一个去聚会的人的方案,使得最后所有人收 到的短信数bi 满足 bi ̸= ai,若无可行方案输出无解实际上这个题没有无解的情况··· solution: 若目前所有ai 均> 0,则所有人不去就满足条件 ...

2018-07-17 19:54:51 180

原创 贪心--CF578B

题目大意: 有n 个数ai,你可以执行最多k 次操作,每次操作你可以使一个数ai 乘上给定的常数x. 求经过操作后,a1 or a2 or···or an 的最大值,其 中or 表示位运算或 solution: x >2,因此一次操作使得一个数最高位至少向左移动1 位 由或运算性质知,越高位有1 数越大 因此所有操作应操作同一个数 枚举操作的数利用前缀后缀和计算答案 O(n...

2018-07-17 11:09:18 163

原创 AC自动机

emm 字符串相关的东西··· https://blog.csdn.net/u013371163/article/details/60469534 这个blog讲的很不错诶然后有两个模板 1、 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过。#include<iostream>#include<cstdio>#include<alg...

2018-07-16 23:43:55 145

原创 贪心--CF529B

题目大意:有n 个人,每个人有两个属性wi; hi,n 个人的价值和为wi的和*max(hi) 现在你可以让不超过⌊n2⌋ 个人的wi 与hi 值互换,求能得到的最小价值和solution: 枚举最后方案中最大的h,设为maxh 若某个人i 的wi 与hi 均大于maxh 则此方案不可行 若某个人恰有一个属性大于maxh 则可确定他是否换属性 剩下的人按wi - hi 从大到小排序后...

2018-07-16 20:10:03 280

原创 贪心、传递闭包--CF500B

题目大意:给定一个n 的排列p 以及一个01 矩阵A,若Ai;j = 1 则你可以交换任 意次pi; pj,求经过交换后能得到的字典序最小的排列solution: 从第一位开始贪心选能换到的最小的数 利用传递闭包求出每个位置上的数能换到哪些位置 O(n3)这里说到了传递闭包 这里有一个博客写的很详细 http://www.cnblogs.com/lpshou/archive/2...

2018-07-16 20:05:53 152

原创 贪心--CF605A

题目大意: 给定一个n 的排列pi,每次操作你可以将任意一个位置上的数放到最前 面或最后面,求将排列从小到大排序的最小操作次数solution: 显然一个数只应被操作一次 操作最少的数! 留下最多的数 求LIS 直接求是错的,比如:1 2 4 5 3 求数字大小连续的LIS O(n) 递推#include<iostream>#include<cstdio...

2018-07-16 19:57:03 190

原创 线段树--SPOJ GSS 4

「题意」: nnn 个数,每个数在 101810^{18}1018 范围内。现在有「两种」操作0 x y把区间 [x,y] 内的每个数开方1 x y询问区间 [x,y] 的每个数的和啊其实就是注意到 即使是10^18开根号7次也变成1了 变成1以后再怎么开还是1,所以就可以不管了 就是这里的一个优化就可以过了#include<iostream>#includ...

2018-07-12 21:04:30 134

原创 线段树--SPOJ GSS 2

与GSS1不同,2需要支持单点修改 但和1没有本质差别 单点修改也是非常好改的#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define ls cur<<1#define rs ...

2018-07-12 00:11:04 167

原创 线段树--SPOJ GSS1

用线段树维护四个值:mx,mxl,mxr,sum,分别表示一个区间的最大和、左起最大和、右起最大和与整段和。连续数的最大和有三种情况:都在左半边,都在右半边,横跨左右两边。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cm...

2018-07-11 22:53:26 173

原创 NOIP 2016 D1T2 天天爱跑步

一个树上神题··· 我还不是特别懂 大概就是开个桶 (桶大概就是以权值为下标的数组) 然后把路径分成向上到lca的,从lca向下的 然后判断一下lca什么什么的可以参考大神的blog https://www.cnblogs.com/ljh2000-jump/p/6189053.html 可以说讲的非常详细了#include<iostream>#include&l...

2018-07-11 20:27:42 173

原创 【模板】Lucas定理

Lucas定理是用来求 c(n,m) mod p,p为素数的值。#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define maxn 100005#define ll long longusi...

2018-07-09 21:38:25 156

原创 建模转化最短路--CF37E.Trial for Chief

题目大意: 把一块大小为M*N的白木板的某些格子涂成黑色 每次可选一个联通块,全涂白或者全涂黑,问最少涂几次solution: (非常巧妙的建图)??? 每个点与周围颜色相同的格子连边权为0的边 每个点与周围颜色不同的格子连边权为1的边 求每个点到最远的黑格子的最短路,取min+1就是答案但实际操作时考虑会有全部是白色 可以是到黑色+1,到白色不+1#include&...

2018-07-09 08:59:38 216

原创 仙人掌直径--poj3567/bzoj1023

差不多是个模板题 给一张仙人掌图求直径 要注意环上的点到最高点的距离要去两侧min值于是和基环树一样 环上单独求,顺便更新ans和最高点max值 可以用dp+单调队列优化复杂度 高端操作get#include<iostream>#include<cstdio>#include<algorithm>#include<cstring&g...

2018-07-08 20:35:35 493

原创 树的直径综合--CH Adera6C

题目描述Rainbow所在学校的网络中有n台计算机,由n-1条电缆相连(即构成树形)。其中第i条电缆连接ai、bi两台计算机,传输时间为ti。当然,网络中任意两台计算机a、b传输数据所需时间就是a到b的路径上所有电缆的传输时间之和。网络的效率关键在于传输时间最长的两台计算机之间传输数据所需要的时间,记为μ。现在Rainbow所在的学校要对网络进行升级,升级的目标就是减小μ的值。对于第i条电...

2018-07-08 18:17:24 292

原创 树的直径--Cf GYM 100781A

题目大意: 给出若干棵树,用最少的边把它们连成一张无向连通图,同时使图的直径最小solution: 求每个树的直径,直径的中心相连,菊花形,把其他树的直径中点连到半径最大的树的直径中点上 根据连接情况讨论计算图的直径答案有三种:第一种是添加了边之后,树的最长路径还是原来子树的路径,第二种是对子树长度进行排序后,两个最长的距离分别除以2向上取整后加上1。第三种比较难注意到,就是第二第三...

2018-07-08 12:01:32 258

原创 建图、dfs求联通块--CF986C

题目大意:给定m个0 ~2^n-1之间的整数,分别代表一个点 X,y间 有无向边当且仅当x&y=0 求有多少个联通块 N不大于22solution:x&y太多了,先考虑x&y=0的y是什么结构,不断填上未知的位将每个数拆成x和x’,从x到(~x)’连有向边从x’到(x’ xor 1<<k)’连有向边(k为所有是1的点)若x属于输入的m个数...

2018-07-08 11:59:21 265

原创 多源BFS--CF986A

题目大意: n个点m条边,边权为1,d(u,v)=u,v最短路 P(u)每个点产生的物品已知,找s个点是p两两不同 并且找到最短的一条路solution: 多源bfs,每种货物分开做,把所有生产第i种的点入队做bfs 得到每个点距离每种货物最短的距离 排序把前s小的加起来#include<iostream>#include<cstdio>#inclu...

2018-07-08 11:55:09 639

原创 仙人掌最短路--bzoj2125

与基环树最短路的思想相同 我们只需要对每个子树求lca,在环上我们以d数组记录一个同向的前缀路径长度 可以方便的算出环上两点之间的最短距离,也就是环两侧距离取min,具体看注释 当我们求x与y之间的距离时 可以分类讨论: 1.如果x和y的lca是y或x2.如果x和y的lca没在环里3.如果x和y的lca在环里算法实现: 设1为根 第一步:spfa求到根的最短路dis 第...

2018-07-06 20:36:50 240

原创 扩展大步小步--[SPOJ]3105

这题也是神坑之一··· 细节很多··· 没开long long 调了我一个小时气死爸爸哦既然这样先来说一下大步小步 大步小步算法是专门用来求解a^x = b(mod n)这种方程的,这种问题也称为离散对数问题。 这个在之前gzz讲数学的笔记里有详细提到 A^x=B (mod C) (A,C)=1 知A,B,C 求最小非负x 设X=x1+x2 则a^x1*a^x2=b mod ...

2018-07-04 21:29:15 180

原创 置换群

Burnside引理和Polya定理 前两天gzz讲的qvq 具体内容在之前的笔记里 这里找到了一个比较好的blog https://blog.csdn.net/agoniangel/article/details/52261452 进阶部分的内容还没有看qvq 写的真的很棒啦!...

2018-07-04 10:27:19 501

空空如也

空空如也

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

TA关注的人

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