自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不来也不去的一只失忆蝴蝶

曾迷途才怕追不上满街赶路人

  • 博客(34)
  • 收藏
  • 关注

原创 [bzoj2818]gcd

题目大意求∑i=1n∑j=1n(i,j)是质数\sum_{i=1}^n\sum_{j=1}^n(i,j)是质数有趣方法很容易想到莫比乌斯反演啦,但本弱智打了另外的弱智方法。 我们知道对于j<ij<i,若有(i,j)=1,那么就有(i*k,j*k)=k。 也就是说只要k是质数就可以算进答案。 于是线性筛,筛出欧拉函数,并处理前缀质数个数。 那么i对于答案的贡献是phi(i)∗sum(n/i)p

2016-05-30 20:34:40 866 2

原创 [bzoj1458]士兵占领

题目大意有N*M的网格,有一些障碍格子,障碍格子不能放士兵。 非障碍格子最多放一个士兵,请放置最少的士兵使得第i行至少有a[i]个士兵第i列至少有b[i]个士兵。上下界最小流很明显了,第i行用点i表示,第i列用点i’表示。(i,j)不是障碍格子,那么i向j’连下限为0上限为1的边。 第i行如果需要至少j个士兵,s向i连下限为j上限为inf的边。 第i列如果需要至少j个士兵,i’向t连下限为j上

2016-05-30 19:54:26 614

原创 [bzoj2453]维护队列

题目大意需要兹瓷修改,区间询问不同种类数。带修改莫队裸上呀!#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=10000+10,maxd=1000000+10,c=25;int belong[maxn],a[maxn],b[maxn

2016-05-30 19:07:08 870

原创 归途与征程

题目描述简单的思路把B串倍长,那么新的串任意一个长度为M的子串都是B的循环同构串。 按照*号把A串分成了若干段,然后每一段都与B串做一次KMP匹配。 具体的,设一个bz[i,j]表示B串第i个位置为开头是否能与第j段匹配。 那么统计答案就是枚举循环同构串的头部,不断往后跑。 当然,如果A串的头部或尾部不是∗*,那么要把它弄成∗*号。 跑的速度很慢达到m^2,所以预处理suc数组表示每个位置

2016-05-28 14:57:47 861

原创 粉刷匠&集体照

题目大意有m个种类的球,第i个种类有r[i]个球,把球排成一行是使得相邻两个球种类不同,问方案数。DP我们可以一个种类一个种类的放球。 两个球中间以及最前最后都有“空”。 定义非法空指该空两端是同色球,合法空反之。 设f[i,j]表示当前做到种类i,有j个合法空。此时有个sum表示空的总数。 我们可以枚举这r[i]个球放去k个合法空中与l个非法空中,那么 f[i,r[i]+j−k−l∗2]

2016-05-28 14:43:27 641

原创 记一次非常颓非常浪的模拟赛——2016.5.28

过程早上有张sb物理卷,由于中途去上厕所的缘故8:07刷完。 一看题目,第一题我还以为是什么东西,一看数据范围发现是玄学题,最虚玄学题。 第二题感觉是道原题,随手推了一下真是个原题。 第三题一开始走的路就比较正确,在想到80分的m^2算法后随手加个优化就100分了。 于是迅速码完第二题,样例过了我就相信我第二题答案是对的。造了组极限居然要跑1200+ms?!加个读入优化优化了20+ms没什么

2016-05-28 14:24:09 673

原创 [bzoj3720][非树分块算法]Gty的妹子树

前言这道题我博客有了,最近用了非树分块做法去弄,感谢dwjshift大神教会我正确的姿势。分块没有修改和加点操作我们是可以用可持久化线段树合并做的。 对于修改和加点操作进行分块,每跨过一块就暴力重构可持久化线段树。 对于一个询问操作,如果询问是块内的新加点,则暴力扫其整个子树获得答案。 否则,先在线段树内找到没有该块内操作影响时的答案,然后枚举块内的操作,并统计影响。这个可以用时间戳来判断是否

2016-05-28 14:10:42 1012

原创 [JSOI2016]反质数序列

题目大意在一个序列里选出一个最长子序列,使得序列中任意两个数相加均不为质数。最大独立首先序列里不可能出现多于1个1,所以多个1可以只保留1个。 那么接下来对于任意的ai+aj=p1,aj+ak=p2(p1,p2为质数),都有p1,p2不为2,也就是p1,p2都是奇数。通过奇偶性分析可以得到ai+ak不为质数。 所以可以根据奇偶性黑白染色,然后两个数相加为质数就连一条边,对建出的二分图求最大独立即

2016-05-26 20:42:35 1485

原创 [bzoj4755][JSOI2016]扭动的回文串

题目大意给定两个长度为n的字符串A和B。 扭动的回文串定义为a[i..j]与b[j..k]相接成的字符串为回文串或者a、b的一个回文子串。随便搞搞对a、b分别做一次manacher。 然后我们只需要考虑相接的扭动回文串。 枚举a中一个回文中心,即最后扭动回文串的回文中心,有一个结论最优一定是延伸到最长(即延伸到[l,r]使得[l,r]是最长以当前回文中心为回文中心的回文串)。 接着只需要看a

2016-05-23 21:26:45 1992

原创 2016.5.21初中部模拟赛总结

过程因为数学放了张超恶心的卷子大概8:20才做完,然后来到的时候比赛时间差不多只有3.5h了QAQ。 读题: t1感觉是什么枚举一下怎么配,然后跑跑一些最短路。又稍微仔细想了想好像不太对。 t2稍微有点被吓到以为是什么计算几何。 t3看了题后就意识到应该是离线做法,随便推了推发现线段树合并就可以搞定。 t4A和B都好拿,送分数据竟然没想法,C的话我认为我可以yy出来,先不管。 不知道什么

2016-05-21 16:09:16 497

原创 [bzoj3510]首都

题目大意一开始有n个结点,没有边。 有三种操作:将两个结点间连一条边,并且保证两个结点属不同联通块。询问一个联通块中所有点到其距离和最小的点。询问所有联通块中所有点到其距离和最小的点的异或和。启发式合并显然是一片森林,要求维护重心。 可以用启发式合并的思路,把小的合到大的里面,然后调整原本大的树里的重心,显然这个重心只会朝着小树方向调整,而且最多移动小树大小步。 然后需要用LCT来维护森林,并

2016-05-21 15:54:02 1317

原创 [bzoj3307]雨天的尾巴

题目大意有m个操作每次将树上一条路径每个结点出扔一个物品。 最后需要输出每个结点上最多的物品的种类。优美算法树链剖分两个log,但是本题可以一个log算法。 每个操作对应一条路径也就是一条线段。 一个结点x所有的物品要么是从其子树里延伸出的线段,要么是以其为端点的线段。 那么每个结点维护线段树表示每个物品的出现次数。 每个操作都拆成三个操作两个插入操作挂在端点上一个删除操作挂在lca上。

2016-05-21 13:31:38 834

原创 寺庙逃脱

题目描述Pty一觉醒来,发现自己竟然陷身于一个巨大的金字塔中。在漆黑一片的通道里,四周闪烁着诡异的绿色,像是许多怪物的眼。阴森的冷风阵阵吹来,像是苏醒的法老抚摸着你的背。Pty不禁打了个寒颤,他必须逃出这里!!经过一番摸索,pty终于找到了金字塔的出口,可是出口却已经被锁住了。拂下锁上的灰尘,pty依稀辨别出锁上的古埃及文字。上面竟然记录着一道智力题!题目经过翻译如下:有若干个递推序列,每个序列可以

2016-05-19 20:58:18 642

原创 [bzoj4500]矩阵

题目描述有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作: 1. 选择一行, 该行每个格子的权值加1或减1。 2. 选择一列, 该列每个格子的权值加1或减1。 现在有K个限制,每个限制为一个三元组(x,y,c),代表格子(x,y)权值等于c。问是否存在一个操作序列,使得操作完后的矩阵满足所有的限制。如果存在输出”Yes”,否则输出”No”。显然我们把每一行或每一列看做一个点

2016-05-18 20:39:42 1037

原创 求生之路

题目描述历经千辛万苦,pty终于打开了金字塔的锁。稍稍适应了外面刺眼的光线,pty抬头望去,眼前竟是一条不见尽头的狭长通道。这时候背后响起了奇怪的窸窣声,原来是金字塔内绿眼黑身的怪物追了过来。Pty来不及多想,便拼命往前奔去。通道狭窄又曲折,时不时还有断裂,不过Pty凭借TempleRun练成的娴熟技巧轻松通过。眼看着离怪物们越来越远时,一棵参天大树突然耸立在了道路中央,大树摆了摆身子,用苍老的声音

2016-05-18 20:16:55 580

原创 [NOI2016模拟5.14]BZOJ

前言加这个前缀也是为了防误会。。题目大意一个n个结点组成的无向完全图,每条边权值在[1,p]且为整数。问有多少种这种图1到n的最短路为m。搜深搜出每种距离标号的点有多少个。 于是就分层了。 然后根据最短路原则,距离标号为i的点一定存在一个距离标号为j的点它们的连边的权值为i-j。 这个不好算,但我们可以算出从所有距离标号小于它的点走过来的距离大于等于j的答案减去大于j就变成了至少1个等于。

2016-05-18 18:40:58 949

原创 树的难题

题目大意一颗树有n个结点,每个结点有黑白灰其中一种颜色。 要求你删去树中若干条边,使得形成的森林中每一颗树都没有白色结点或至多有一个黑色结点。删去一条边的代价为该边的边权,最小化代价。树形DP注意到一个合法的联通块的任意子联通块也符合条件。 所以树形DP,设f[i],g[i],h[i]表示将以i为根的子树分成合法森林,i结点所在联通块有0个黑点、1个黑点、0个白点的最小代价。 转移方程很容易了

2016-05-17 19:07:56 541

原创 [bzoj3702]二叉树

题目大意有一个n个叶子结点的树,叶子结点上有权值,且为[1,n]的排列。 你可以交换任一非叶子结点的左右儿子,请最小化中序遍历后的逆序对个数。线段树合并显然在一个非叶子结点需要确定左右次序,并且这与其左右子树内的次序无关。 对于每个结点维护一个线段树,那么每次就是合并左右儿子的线段树。 至于如何统计每种次序的逆序对个数,线段树合并的时候统计就好了,具体见代码。#include<cstdio>

2016-05-16 20:23:04 712

原创 [NOI2016模拟5.14]最长公共子序列

前言关于这个前缀……是因为这个题目的名字很容易让人想到一些别的题目,所以加前缀区分一下。题目描述naive做法设i表示A串不在LCS的位置,j表示B串不在LCS的位置。由于不能让lcs结果为n,所以填入B串第j个位置的字符不能为s[j]。 我们先固定j,然后考虑B串的可能性个数。 考虑j<=i的情况。 第一条红线前的部分就被确定了,只需要考虑第一条红线后有多少种可能即可。 那么就是看i取

2016-05-16 19:49:23 763 1

原创 [bzoj1584]打扫卫生

题目大意把一个长度为n的序列分成若干段。 每一段的代价为其中不同的数的个数的平方。 最小化代价。DP设f[i]表示把[1..i]分成若干段的最优解。 那么显然有一个单调性f[i]<=f[i+1]。 我们可以枚举最后一段中不同的数的个数j。那么设b[j]表示最小的k满足[k,i]之间恰好有j个不同的数。 那么显然f[i]=min[1,i]不同的数的个数j=1(f[b[j]−1]+j2)f[i

2016-05-16 18:44:42 973

原创 异或树

题目大意给出一颗树。 求∑n−1i=1∑nj=i+1(a[i] xor a[j])∗dis(i,j)\sum_{i=1}^{n-1}\sum_{j=i+1}^n(a[i]\ xor\ a[j])*dis(i,j) dis(i,j)表示i到j的最短路。点剖这不用说了,拆位,然后点剖。 因为是有序对其实我们可以搞成无序对然后答案除以2。#include<cstdio>#include<algor

2016-05-14 12:48:40 1253

原创 关于树分块算法的一些研究

前言树分块这种算法,本蒟蒻没有查询到太多资料。 而gty系列中,出现过如“gty的妹子树”这样的题目,流传着一种“树分块”做法。 然而,网络流传的树分块算法都可以被菊花图卡掉。 流传的方法:一个结点的父亲所在块未满,就让该结点加入其父亲所在块,否则自成一块。 至于这个方法最早的出处我就不清楚了。 本文将介绍正统的树分块算法(其实也是笔者yy的)。 先把结论放上:其实树分块并没有什么卵用。

2016-05-13 21:23:18 5521 9

原创 [bzoj4553][TJOI&HEOI2016]序列

题目大意有一个长度为n的序列,有一些位置的值有可能变化。 一次变化最多只会改变一个位置上的值,题目告诉了你可能发生的变化情况。 求在任意可能情况下都能满足非降的最长子序列长度。DP先弄出偏序关系,设mi[i]表示位置i可能出现的最小值,mx[i]就是最大值。 那么对于j<ij<i,j与i可以在一个合法子序列中的条件是: 1、a[j]<=mi[i] 2、mx[j]<=a[i] 设f[i]表

2016-05-11 19:36:08 1596 3

原创 [bzoj4552][TJOI&HEOI2016]排序

题目大意有一个n的排列,进行m次操作,每次操作是将一个区间升序或降序排序。 请你输出m次操作后第p个位置的值。二分答案题解好机智! 我们二分答案x,然后就是判断a[p]>=x? 把原序列转化为01序列,0表示小于x,1表示大于等于x。 那么区间升序排序其实就是把0全放前面,1都放后面。 用线段树兹瓷区间赋值就好了。 然后只需要维护区间0的个数。#include<cstdio>#incl

2016-05-10 20:19:02 3017 2

原创 [bzoj4551][TJOI&HEOI2016]树

题目大意一颗树,除根节点外初始都是白点,根节点是黑点。 每次染黑一个结点或者询问一个结点的最近黑色祖先。倒序处理倒着做,于是每次是染白一个结点。 那么就并查集搞呀!#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using na

2016-05-10 19:29:21 1028

原创 动态树问题

前言当一类题目中的树需要支持换根、加边、删边的这些操作时,会改变树的形态,并要求维护一些信息,这类问题称为动态树问题。link cut tree这里有我写的学习小记 link cut tree学习小记 支持的功能:换根,加边,删边,链上信息维护。 不支持的功能:子树信息维护。 习题:弹飞绵羊,魔法森林,substring。euler tour tree我不知道真正的ETT怎么打,我将它理解为

2016-05-09 20:40:53 1142

原创 [bzoj3052][WC2013]糖果公园

题目大意给定一颗n个结点的树。每个结点有一种颜色。颜色种类为m。 一条路径的价值定义为 ∑i=1mw[cnt[i]]∗v[i]\sum_{i=1}^mw[cnt[i]]*v[i] 其中cnt[i]表示这条路径上颜色i出现的次数。 现有q个操作,每个操作要么是询问一条路径的价值,要么是将一个结点的颜色种类修改。带修改莫队这是树上莫队,我们接下来只讨论序列莫队,树上莫队可以转化为序列莫队。 带

2016-05-09 20:08:23 2113

原创 [bzoj1086]王室联邦

题目描述“余”人国的国王想重新编制他的国家。他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成 员来管理。他的国家有n个城市,编号为1..n。一些城市之间有道路相连,任意两个不同的城市之间有且仅有一条 直接或间接的道路。为了防止管理太过分散,每个省至少要有B个城市,为了能有效的管理,每个省最多只有3B个 城市。每个省必须有一个省会,这个省会可以位于省内,也可以在该省外。但是该省的任意

2016-05-09 18:52:57 929

原创 美图集中地?

1、 2、 3、 4、

2016-05-09 12:39:05 586

原创 GDOI2016口胡题解

前言我好懒呀……估计很多题解不会补了。DAY 1t1:容易发现把n当作自变量是一个单峰函数套单峰函数,双三分即可。 另一个好理解的是,把其中一个n枚举,然后接下来只有一个自变量也很容易证明是一个单峰函数,同样使用三分。 t2:先把区间合并,然后每个位置都会属于一个区间。设f[i,j]表示以A串第i位和B串第j位匹配为结尾的LCS。那么转移有两种情况,一种是第j位可以放一个和A串第i位一样的字符,

2016-05-08 10:24:26 960

原创 [bzoj3065]带插入区间K小值

题目大意在线维护一个序列,需要兹瓷插入、修改、求区间K小值。树套树开一颗权值线段树。 对于区间[l,r]对应的结点上保存一颗spaly,spaly中的结点权值均在[l,r],按照位置从小到大。 要维护一个结点的位置号。 插入操作,往下走然后插入到spaly中,并打区间加标记来维护位置号。 修改操作,相当于一次删除一次插入。 询问操作,利用线段树特性查找即可。 嘴巴我会,你要我打……还没准

2016-05-06 22:08:44 1795

原创 [bzoj4569][SCOI2016]萌萌哒

题目大意有一个无前导0的n位数,有m个限制形如[l1,r1]=[l2,r2],问满足条件的数有多少种,答案模10^9+7。倍增我们用ST表,f[i,j]表示[i,i+2^j-1]这一段。 那么初始时每一段单独成一个集合。 对于一个限制可以拆成log 份,然后进行集合合并。 然后呢,如果任意f[s,t]和f[i,j]属于同一集合,那么f[s,t-1]与f[i,j-1]以及f[s+2^(t-1)-

2016-05-06 19:23:52 2133

原创 GDOI2016游记

一次在肇庆四会的旅游

2016-05-04 18:59:00 2147 9

原创 大声的喊——NOI2016,我来了!

初中的最后一次省选,WerKeyTom_FTD,你干的很好!

2016-05-03 18:09:51 2922 17

空空如也

空空如也

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

TA关注的人

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