自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TYB的博客

我们剩下颓的时间不多了!

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

原创 Codeforces 438E - The Child and Binary Tree 多项式求逆+开根

Description我们的小朋友很喜欢计算机科学,而且尤其喜欢二叉树。考虑一个含有n个互异正整数的序列c[1],c[2],…,c[n]。如果一棵带点权的有根二叉树满足其所有顶点的权值都在集合{c[1],c[2],…,c[n]}中,我们的小朋友就会将其称作神犇的。并且他认为,一棵带点权的树的权值,是其所有顶点权值的总和。给出一个整数m,你能对于任意的s(1<=s<=m)计算出权值...

2019-01-31 23:04:03 219

原创 [BZOJ]4453: cys就是要拿英魂! 单调栈+二分+hash

Descriptionpps又开始dota视频直播了!一群每天被pps虐的蒟蒻决定学习pps的操作技术,他们把pps在这局放的技能记录了下来,每个技能用一个字符表示。经过研究,蒟蒻们发现字典序更大的连招威力更大。于是所有蒟蒻都想学习pps最强的连招。但是他们太弱了,不能学会整个视频里的连招,只能学会陈老师一段区间间内的连招,可是这个他们求不出,于是只好向你求助。为了蒟蒻们不再被pps虐(怎么可能...

2019-01-31 22:46:25 249

原创 [BZOJ]3729: Gty的游戏 splay+博弈

Description某一天gty在与他的妹子玩游戏。妹子提出一个游戏,给定一棵有根树,每个节点有一些石子,每次可以将不多于L的石子移动到父节点,询问将某个节点的子树中的石子移动到这个节点先手是否有必胜策略。gty很快计算出了策略。但gty的妹子十分机智,她决定修改某个节点的石子或加入某个新节点。gty不忍心打击妹子,所以他将这个问题交给了你。另外由于gty十分绅士,所以他将先手让给了...

2019-01-18 22:22:15 170

原创 [BZOJ]3958: [WF2011]Mummy Madness 二分+扫描线+线段树

Description在2011年ACM-ICPC World Finals上的一次游览中,你碰到了一个埃及古墓。不幸的是,你打开了坟墓之后,才发现这是一个坏主意:突然之间,原本空无一物的沙漠上已经爬满了暴躁的木乃伊。(如果你也沉睡几千年而突然被惊醒,你也会变得如此暴躁的。)(幸运的是,当你做完这道题的时候,你醒来了,发现你在弗罗里达的酒店里。那些木乃伊只是一场梦。)面对这一大堆疯狂的木乃伊...

2019-01-18 22:18:45 260

原创 [BZOJ]2728: [HNOI2012]与非 思维

Solution这题还是不错的。首先可以观察到的是,这个与非的功能还是十分强大的,他可以实现按位取反x NAND xx\ NAND\ xx NAND x,下面按位取反的符号设为!!!,或(!x)NAND(!y)(!x)NAND(!y)(!x)NAND(!y),与!(x NAND y)!(x\ NAND\ y)!(x NAND...

2019-01-18 13:01:13 133

原创 [BZOJ]2119: 股市的预测 分治+主席树+后缀数组

Description墨墨的妈妈热爱炒股,她要求墨墨为她编写一个软件,预测某只股票未来的走势。股票折线图是研究股票的必备工具,它通过一张时间与股票的价位的函数图像清晰地展示了股票的走势情况。经过长时间的观测,墨墨发现很多股票都有如下的规律:之前的走势很可能在短时间内重现!如图可以看到这只股票A部分的股价和C部分的股价的走势如出一辙。通过这个观测,墨墨认为他可能找到了一个预测股票未来走势的方法。进...

2019-01-17 22:38:12 209

原创 [LOJ]#2083. 「NOI2016」优秀的拆分 二分+hash+思路

Solution其实这个东西也不知道是称为思路还是套路……就是在做这类要在字符串中找相同的两段的题目,有一个这样的做法:枚举串的长度LLL,然后把字符串分段,每LLL个分一段,把每一段的第一个位置记为关键位置,这样每个长度为LLL的子串都会经过且仅经过一个关键位置,然后对每个关键位置ppp和下一个关键位置p+Lp+Lp+L,求前缀的S[1..p]、S[1..p+L]S[1..p]、S[1..p...

2019-01-17 22:29:21 247

原创 [BZOJ]4032: [HEOI2015]最短不公共子串 SAM+DP+hash

Description在虐各种最长公共子串、子序列的题虐的不耐烦了之后,你决定反其道而行之。一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是。一个串的“子序列”指的是它的可以不连续的一段,例如bde是abcdef的子串,但bdd不是。下面,给两个小写字母串A,B,请你计算:(1) A的一个最短的子串,它不是B的子串(2) A的一个最短的子串,它不是B的...

2019-01-16 22:34:38 188

原创 [BZOJ]2669: [cqoi2012]局部极小值 容斥+状压DP

Description有一个n行m列的整数矩阵,其中1到nm之间的每个整数恰好出现一次。如果一个格子比所有相邻格子(相邻是指有公共边或公共顶点)都小,我们说这个格子是局部极小值。给出所有局部极小值的位置,你的任务是判断有多少个可能的矩阵。Solution这题的突破口是局部极小值的格子不会太多,最多888个,因为每个局部极小值周围888格都不能是。之前一直想着状压行或列,其实是状压这个极小值...

2019-01-16 22:26:49 212

原创 [BZOJ]3956: Count 主席树+单调栈

Solution问题其实就是求两端点都为区间最大值的点对数量,先用单调栈求出每个点作为最大值可以延伸到的左右端点,然后可以发现答案都是这样的:对于一对(x,y)(x,y)(x,y),要么是xxx向右延伸到y−1y-1y−1,要么是yyy向左延伸到x+1x+1x+1,所以问题就转化为区间内某个范围内的数有多少个,直接主席树即可。注意相同的数的处理,详情可以看代码。Code#include&l...

2019-01-15 22:20:22 212

原创 [BZOJ]3218: a + b Problem 主席树优化建图+网络流

Solution这题算是经典题了……但是一直到今天才做。本来以为很快就能切了这题,没想到搞了很久,一直有一个点过不去,也不知道问题是什么,反正是有关相同数的合并的问题。后来不知怎么解决,想到一个不错的方法:离散化,强行让所有数都不同就可以了。Code#include<bits/stdc++.h>using namespace std;#define LL long lon...

2019-01-15 22:13:34 279

原创 [BZOJ]4105: [Thu Summer Camp 2015]平方运算 线段树

Solution太菜了……我打表打出来的循环节是真正的循环节+1+1+1,导致没有发现规律……发现循环节的lcmlcmlcm最大为606060,那么线段树每个区间直接维护区间循环节就可以了。Code#include<bits/stdc++.h>using namespace std;#define LL long long#define pa pair<int,in...

2019-01-14 22:25:30 187

原创 [BZOJ]4104: [Thu Summer Camp 2015]解密运算

Description对于一个长度为N的字符串,我们在字符串的末尾添加一个特殊的字符"."。之后将字符串视为一个环,从位置1,2,3,…,N+1为起点读出N+1个字符,就能得到N+1个字符串。比如对于字符串“ABCAAA”,我们可以得到这N+1个串:ABCAAA.BCAAA.ACAAA.ABAAA.ABCAA.ABCAA.ABCAA.ABCAAA接着我们对得到的这N+1个串按字...

2019-01-14 22:17:51 217

原创 [BZOJ]4103: [Thu Summer Camp 2015]异或运算 可持久化trie

Description给定长度为n的数列X={x1,x2,…,xn}和长度为m的数列Y={y1,y2,…,ym},令矩阵A中第i行第j列的值Aij=xi xor yj,每次询问给定矩形区域i∈[u,d],j∈[l,r],找出第k大的Aij。Solution由于mmm较大,nnn较小,所以对YYY建可持久化trie,每次询问就在trie上二分,不过稍微有点不同的是,通常是一个点在上面走,而现...

2019-01-14 19:17:42 167

原创 Atcoder E - Connecting Cities 线段树

Solution求最小生成树,考虑使用primprimprim算法。首先定义已在生成树中的点集为AAA,不在的为BBB。线段树维护555个量:AAA连到BBB的最小边权,A、BA、BA、B中ai+Di、ai−Dia_i+Di、a_i-Diai​+Di、ai​−Di的最小值。每次相当于从BBB中删去一个点,并加入AAA。Code#include<bits/stdc++.h>u...

2019-01-14 19:13:30 612

原创 Atcoder D - Double Landscape

Solution考虑从大到小填数。定义一行或一列被覆盖当且仅当这一行或列已经填了至少一个数,这就意味着之后随便填都不会影响最大值。设N、MN、MN、M分别为当前覆盖的行和列数。对于每个填的数,分几种情况讨论:1、有一行和一列以它为最大值,此时填的位置固定。2、有一行或一列以它为最大值,此时它只能填在那一行或一列一个被覆盖的位置上,ansansans乘上NNN或MMM。3、没有行和列以...

2019-01-14 19:03:58 351

原创 Codeforces 961F. k-substrings 二分+hash

Solution这题不会做……题目给了一个限制,就是长度为奇数,思考一下这个条件,就是让我们枚举一个中点,然后二分以此为中点的串最长长度,比如说中点iii,最长长度为2L−12L-12L−1,那么也就是说s[i−L+1,i+L−1]s[i-L+1,i+L-1]s[i−L+1,i+L−1]与s[n−i+1−L+1,n−i+1+L−1]s[n-i+1-L+1,n-i+1+L-1]s[n−i+1−L...

2019-01-13 19:50:57 227

原创 Codeforces 1073G. Yet Another LCP Problem SAM+虚树

Solution很套路的一道题。后缀的LCPLCPLCP可以变为前缀的LCSLCSLCS,那么建出SAM之后就转化为一个树上问题,即统计所有给出点对的LCALCALCA权值和,由于多个询问,建虚树即可。Code#include<bits/stdc++.h>using namespace std;#define LL long long#define pa pair<...

2019-01-13 19:39:48 348

原创 [LOJ]#2126. 「HAOI2015」数组游戏 博弈 SG函数

Description有一个长度为N的数组,甲乙两人在上面进行这样一个游戏:首先,数组上有一些格子是白的,有一些是黑的。然后两人轮流进行操作。每次操作选择一个白色的格子,假设它的下标为x。接着,选择一个大小在1~n/x之间的整数k,然后将下标为x、2x、…、kx的格子都进行颜色翻转。不能操作的人输。现在甲(先手)有一些询问。每次他会给你一个数组的初始状态,你要求出对于这种初始状态他是否有必胜策略...

2019-01-12 21:46:13 271

原创 [BZOJ]4664: Count DP

Description小叶子的桌面上有 n 本高度不相同的书,n+e 现在需要把这些书按照一定的顺序摆放好。假设第 i 本书的高度为 h[i],n+e 的摆放用一个 1~n的排列 pi 来表示。定义一个摆放的混乱程度:|h[p2]-h[p1]|+|h[p3]-h[p2]|+……+|h[pn]-h[pn-1]|,即相邻两本书的高度差的绝对值之和。已知合法的摆放要求其混乱程度不超过 L。小叶子想要知...

2019-01-12 11:27:21 400

原创 Codeforces 1101G. (Zero XOR Subset)-less 线性基+贪心

Solution这题感觉不是很难(作为一个G题来说)……先转化问题,每个数变为它的异或前缀和,问题转化为一定要选ana_nan​,然后选尽量多的数使得没有一个子集异或为000。这是个线性基经典问题,加强版是BZOJ2460,那道题目每个数有不同权值,这题可以把所有数的权值看做是111,直接贪心,能选就选就完事了。Code#include<bits/stdc++.h>usin...

2019-01-12 11:13:59 606

原创 [BZOJ]3579: 破冰派对 搜索

Description由于计算机系的同学们都很宅,很多同学虽然身在一个系,但是入学很久还是相互不认识。学生会主席小Y希望举办一次破冰派对,要让同学们多从寝室里走出来参加娱乐活动,也要让尽量多不认识的同学们通过活动相互认识。自然的,如果参加活动的同学互相都不认识,那便是极好的。

2019-01-11 20:17:42 285

原创 [BZOJ]4229: 选择 离线+树链剖分

Description现在,我想知道自己是否还有选择。给定n个点m条边的无向图以及顺序发生的q个事件。每个事件都属于下面两种之一:1、删除某一条图上仍存在的边2、询问是否存在两条边不相交的路径可以从点u出发到点vSolution我可能是个SB……其实我以前还做过这题,BZOJ的星球联盟,但是我忘了,想的做法是类似BZOJ1969的。正常的做法是倒着加边,然后把树上的一段点缩成一个...

2019-01-11 13:51:02 253

原创 [BZOJ]5020 & [LOJ]#2289: [THUWC 2017]在美妙的数学王国中畅游 LCT+泰勒展开

Description数字和数学规律主宰着这个世界。机器的运转,生命的消长,宇宙的进程,这些神秘而又美妙的过程无不可以用数学的语言展现出来。这印证了一句古老的名言:“学好数理化,走遍天下都不怕。”学渣小R被大学的数学课程虐得生活不能自理,微积分的成绩曾是他在教室里上的课的最低分。然而他的某位陈姓室友却能轻松地在数学考试中得到满分。为了提升自己的数学课成绩,有一天晚上(在他睡觉的时候...

2019-01-11 13:44:13 188

原创 [BZOJ]3043: IncDec Sequence 差分

Description给定一个长度为n的数列{a1,a2…an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。SolutionGDOI后这题就是SB题了。直接差分后乱搞即可。Code#include<bits/stdc++.h>using names...

2019-01-10 17:24:22 185

原创 杜教筛

复习一波。应用在O(n23)O(n^{2\over 3})O(n32​)的时间内求某些积性函数的前缀和。怎么搞设我们要求和的积性函数为f(i)f(i)f(i),S(n)=∑i=1nf(i)S(n)=\sum_{i=1}^nf(i)S(n)=∑i=1n​f(i)。先给它卷上另外一个积性函数,设为g(i)g(i)g(i)。设T=∑i=1n∑d∣if(d)g(i/d)T=\sum_{i=1}...

2019-01-10 13:13:22 269

原创 [BZOJ]4527: K-D-Sequence (Codeforces 407E) 线段树

Description我们称一个数列为一个好的k-d数列,当且仅当我们在其中加上最多k个数之后,数列排序后为一个公差为d的等差数列。你手上有一个由n个整数组成的数列a。你的任务是找到它的最长连续子串,使得满足子串为好的k-d数列。Solutiond=0d=0d=0先特判。否则一个区间满足条件,当且仅当:1、区间内的数%d\%d%d相等。2、区间内没有重复的数。3、max−min...

2019-01-10 08:10:47 309

原创 Codeforces 891E. Lust 生成函数

Solution每次得到的值可以看做操作后整个序列的乘积减去操作前整个序列的乘积,这样就把问题转化为求最后数列的乘积减去开始数列的乘积。把式子列出来,设bib_ibi​为aia_iai​被减去的值,得到E=1nk×k!Πbi!×Π(ai−bi)E={1\over n^k}\times {k!\over \Pi b_i!}\times {\Pi (a_i-b_i)}E=nk1​×Πbi​!k!​...

2019-01-09 14:52:53 244

原创 [BZOJ]3136: [Baltic2013]brunhilda

Description给定m个素数和Q个询问。每个询问有n个人,每次操作可以任意选择其中的一个素数p(素数可以重复使用),然后去掉剩余人数 mod p个人。对于每个询问,我们想知道,至少需要多少步操作才能去掉所有人。Solution这题的一个想法是fif_ifi​表示iii这个数的最少步数,但是这样要做到O(1)O(1)O(1)转移。其实决策点是单调的,fff也是单调不降的,所以可以一边扫一...

2019-01-09 13:09:28 415

原创 [BZOJ]3133: [Baltic2013]ballmachine 树状数组

Solution简单题。先dfs一次求出球到的节点顺序,对于op=1op=1op=1,可以把球逐个放入,在数据结构上二分,找到第一个没有球的节点;再维护每个点到根上的球数,对于op=2op=2op=2,就是询问这个东西。我用了两个树状数组。Code#include<bits/stdc++.h>using namespace std;#define LL long long...

2019-01-09 12:50:03 295

原创 [BZOJ]3090: Coci2009 [podjela] 树形DP

Description有 N 个农民, 他们住在 N 个不同的村子里. 这 N 个村子形成一棵树.每个农民初始时获得 X 的钱.每一次操作, 一个农民可以从它自己的钱中, 取出任意数量的钱, 交给某个相邻村子的农民.对于每个农民给定一个值 v_i, 求(1) 最少需要多少次操作, 使得每个农民最终拿到的钱 >= 给定的值.Solution这种题都被出烂了……但是我还是思考了挺久...

2019-01-08 21:39:31 341

原创 [BZOJ]3028: 食物 生成函数

Description明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西。理所当然的,你当然要帮他计算携带N件物品的方案数。他这次又准备带一些受欢迎的食物,如:蜜桃多啦,鸡块啦,承德汉堡等等当然,他又有一些稀奇古怪的限制:每种食物的限制如下:承德汉堡:偶数个可乐:0个或1个鸡腿:0个,1个或2个蜜桃多:奇数个鸡块:4的...

2019-01-08 13:34:02 185

原创 最小割一些建模方法

最大权闭合子图问题在一个有向无环图中,每个点有点权,现在需要选出一个子图,满足若一个点被选,它连向的所有点都被选,求子图的最大权值和是多少。建模方法源点向所有正权点连边,容量为权值, 所有负权点向汇点连边,容量为权值的相反数,原图的边保留,权值为正无穷。答案为正权点权值和-最小割。二元关系建图问题有一些点,每个点有两种权值a、ba、ba、b,有一些二元关系,形如若在一个点选了某种权值...

2019-01-08 08:47:40 944 3

原创 [BZOJ]4873: [Shoi2017]寿司餐厅 最小割 最大权闭合子图

DescriptionKiana最近喜欢到一家非常美味的寿司餐厅用餐。每天晚上,这家餐厅都会按顺序提供n种寿司,第i种寿司有一个代号ai和美味度di,i,不同种类的寿司有可能使用相同的代号。每种寿司的份数都是无限的,Kiana也可以无限次取寿司来吃,但每种寿司每次只能取一份,且每次取走的寿司必须是按餐厅提供寿司的顺序连续的一段,即Kiana可以一次取走第1,2种寿司各一份,也可以一次取走第2,3...

2019-01-07 21:22:05 149

原创 [BZOJ]4872: [Shoi2017]分手是祝愿 期望DP

DescriptionZeit und Raum trennen dich und mich.时空将你我分开。B 君在玩一个游戏,这个游戏由 n 个灯和 n 个开关组成,给定这 n 个灯的初始状态,下标为从 1 到 n 的正整数。每个灯有两个状态亮和灭,我们用 1 来表示这个灯是亮的,用 0 表示这个灯是灭的,游戏的目标是使所有灯都灭掉。但是当操作第 i 个开关时,所有编号为 i 的约数(包括...

2019-01-07 17:17:02 176 1

原创 [BZOJ]4870: [Shoi2017]组合数问题 DP+矩阵乘法

Solution题目求的实际上是在nknknk个物品中,选mmm个(m%k=rm\%k=rm%k=r)个物品的方案数,而kkk又很小,nnn很大,所以直接矩阵乘法就行了。要注意k=1k=1k=1的时候,一开始转移矩阵是直接赋值,但因为k=1k=1k=1的存在,要++++++。Code#include<bits/stdc++.h>using namespace std;#de...

2019-01-07 16:56:48 208 1

原创 [BZOJ]4868: [Shoi2017]期末考试 三分

Description有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布。第i位同学希望在第ti天或之前得知所.有.课程的成绩。如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程公布成绩,每等待一天就会产生C不愉快度。对于第i门课程,按照原本的计划,会在第bi天公布成绩。有如下两种操作可以调整公布成绩的时间:1.将负责课程X的部分老师调整到课程...

2019-01-07 16:53:06 270

原创 Codeforces 1096G. Lucky Tickets NTT

题解:就是一个裸的背包,用快速幂+NTT优化就行了,当练练手。代码:#include<bits/stdc++.h>using namespace std;#define LL long long#define pa pair<int,int>const int Maxn=200010,Maxk=12;const int inf=2147483647;con...

2019-01-02 20:23:54 196

原创 Codeforces 960G. Bandit Blues 分治NTT+第一类斯特林数+DP

题解:考虑最简单的DP,fi,jf_{i,j}fi,j​表示i个数的排列,上升序列长度为j的方案数,考虑从大到小放数字,即最后一次放最小的数字,容易得到转移fi,j=fi−1,j−1+(i−1)fi−1,jf_{i,j}=f_{i-1,j-1}+(i-1)f_{i-1,j}fi,j​=fi−1,j−1​+(i−1)fi−1,j​,这其实是第一类斯特林数的递推式。枚举n放在哪里,答案为∑i=1n...

2019-01-02 17:26:17 181

空空如也

空空如也

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

TA关注的人

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