E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
TJOI
【题解】Luogu P3871 [
TJOI
2010]中位数
平衡树板题原题传送门这道题要用Splay,我博客里有对Splay的详细介绍每次加入一个数,把数插入平衡树中并且要记录一共有多少个数每次查询就查询平衡树中第(总数-1)/2+1个数十分暴力#include#defineN110005#defineroottree[0].ch[1]usingnamespacestd;inlineintread(){registerintx=0,f=1;register
JSOI爆零珂学家yzhang
·
2018-11-17 15:00
【洛谷3759】[
TJOI
2017] 不勤劳的图书管理员(树套树)
点此看题面大致题意:给定一个序列,每个元素有两个属性aia_iai和viv_ivi,每次操作改变两个元素的位置,求每次操作后∑vi+vj[i<j,ai>aj]\sum{v_i+v_j}[i<j,a_i>a_j]∑vi+vj[iaj]。关于题意的解读其实,题目差不多就是让我们求逆序对(只不过每个逆序对有一个权值)。这会让我们联想起一道题目:【洛谷3157】[CQOI2011]
chenxiaoran666
·
2018-10-27 15:41
洛谷
树套树
省选专练[
TJOI
2013]循环格
神仙网络流QAQ这个主要还是没想通环是啥:图中全是入读出度为1的点所以用费用流表示改变方向#includeusingnamespacestd;constintN=1e5+10;constintINF=0x3f3f3f3f;structFront_star{intu,v,w,c,nxt;}e[Nmmp;voidBuild_Gra(){for(inti=1;iQ;intinqueue[N]={};in
Leo_JAM
·
2018-08-27 16:11
费用流
2013
TJOI
【BZOJ3172】[
TJOI
2013] 单词(AC自动机的小应用)
点此看题面大致题意:给你NNN个单词,请你求出每一个单词在这NNN个单词中出现的次数。相关题目这道题应该是洛谷上一道板子题的升级版。LinkLinkLink【洛谷3796】【模板】AC自动机(加强版)的题解详见博客【洛谷3796】【模板】AC自动机(加强版)ACACAC自动机这是一道ACACAC自动机的简单运用题。LinkLinkLinkACACAC自动机详见博客初学AC自动机题解一个比较暴力的做
chenxiaoran666
·
2018-08-20 19:33
BZOJ
AC自动机
浴谷P3846 [
TJOI
2007]可爱的质数
传送门分析:BSGS算法的模板题,bsgs算法,又称大步小步算法,主要用来解决A^x=B(modC)(C是质数),都是整数,已知A、B、C求x具体步骤如下:先令x=i*m-j,其中m=ceil(sqrt(p)),ceil是向上取整。这样原式就变为 ai*m-j =b(modp),移项就变成了 ai*m=b*aj(modp)枚举j(范围0-m),将b*aj 存入hash表。枚举i(范围1-m
一只特立独行的猪猪女孩
·
2018-08-11 20:06
bsgs算法
TJOI
2018 数学计算
Description小豆现在有一个数x,初始值为1。小豆有Q次操作,操作有两种类型:1m:x=x×m,输出xmodM;2pos:x=x/第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1的操作至多会被除一次),输出xmodM。Input一共有t组输入。对于每一组输入,第一行是两个数字Q,M。接下来Q行,每一行为操作类型op,操作编号或所乘的数字m(保证所有的输入都是合法的)
DancingZ
·
2018-07-17 19:01
数据结构
线段树
TJOI
2018 数学计算
Description小豆现在有一个数x,初始值为1。小豆有Q次操作,操作有两种类型:1m:x=x×m,输出xmodM;2pos:x=x/第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1的操作至多会被除一次),输出xmodM。Input一共有t组输入。对于每一组输入,第一行是两个数字Q,M。接下来Q行,每一行为操作类型op,操作编号或所乘的数字m(保证所有的输入都是合法的)
DancingZ
·
2018-07-17 19:01
数据结构
线段树
[bzoj3170][
Tjoi
2013]松鼠聚会【切比雪夫距离】
【题目链接】https://www.lydsy.com/JudgeOnline/problem.php?id=3170【题解】首先将切比雪夫距离转换为曼哈顿距离。把每个点的坐标变为(x+y2,x−y2)(x+y2,x−y2)后曼哈顿距离等于之前的切比雪夫距离。证明:设切比雪夫距离为aa,曼哈顿距离为bb,两个点的坐标为(x1,y1),(x2,y2)(x1,y1),(x2,y2)。那么有a=max(
VanishD
·
2018-06-26 22:50
【切比雪夫距离】
「
TJOI
2018」数学计算(线段树)
描述小豆现在有一个数xxx,初始值为111。小豆有QQQ次操作,操作有两种类型:111$m$:x=x×mx=x×mx=x×m,输出xxxmodmodmodMMM;$2$pospospos:x=x/x=x/x=x/第$pos$次操作所乘的数(保证第pospospos次操作一定为类型111,对于每一个类型111的操作至多会被除一次),输出xxxmodmodmodMMM。输入一共有ttt组输入。对于每一
SC.ldxcaicai
·
2018-06-26 20:10
#
线段树
[bzoj4555][
Tjoi
2016&Heoi2016]求和【stirling数】【FFT~NTT】
【题目链接】https://www.lydsy.com/JudgeOnline/problem.php?id=4555【题解】考虑第二类斯特林数的公式:xn=∑xi=0(xi)i!∗Sn,ixn=∑i=0x(ix)i!∗Sn,i就是先枚举选了几个格子,再乘以顺序。对这个式子做二项式反演,得:Sn,x=1x!∑xi=0(−1)x−i(xi)inSn,x=1x!∑i=0x(−1)x−i(ix)in用此
VanishD
·
2018-06-25 07:11
【FFT~NTT】
【stirling数】
[bzoj5339][
TJOI
2018]教科书般的亵渎【拉格朗日插值法】
【题目链接】https://www.lydsy.com/JudgeOnline/problem.php?id=5339https://loj.ac/problem/2578【题解】显然k=m+1k=m+1k=m+1,然后就是一个kkk次幂的前缀和减去几个没有的值。用插值法可以实现。时间复杂度O(M3)O(M^3)O(M3)【代码】#include#definelllonglong#definein
VanishD
·
2018-06-13 11:35
【拉格朗日插值法】
[bzoj5338][loj2557][
TJOI
2018]xor【可持久化线段树】【dfs序】【欧拉序】
【题目链接】https://www.lydsy.com/JudgeOnline/problem.php?id=5338https://loj.ac/problem/2577【题解】可以开两棵可持久化权值线段树,一棵记dfs序维护子树信息,另一棵记欧拉序维护链信息。在开先段树的时候左边的二进制首位为00,右边为11。对于一次询问,贪心向下选取就行了。时间复杂度O(N∗31)O(N∗31)【代码】#i
VanishD
·
2018-06-13 10:20
【可持久化线段树】
【dfs序】
【欧拉序】
[bzoj4552][
Tjoi
2016&Heoi2016]排序【线段树】
【题目链接】https://www.lydsy.com/JudgeOnline/problem.php?id=4552【题解】线段树的一些特殊技巧:合并与分裂。首先把每个点都建出一棵权值线段树,每次排序时,将包含的权值线段树合并在一起即可。可以用set维护当前的线段树集合。但是排序可能会将两端的线段树分开,这时就要进行分裂操作,形象一点,就是将线段树从中间切开,在切割的地方新增一条节点,然后原来的
VanishD
·
2018-05-28 22:45
【线段树】
【
TJOI
2015】组合数学
Description:题解:这个东西一看就是二维偏序吗?首先考虑把一个权值为v的点拆成v的相同的点,这v个点相互不可比的。这样答案变成了最小链覆盖。dilworth定理:最小链覆盖=最大反链。一个点拆成了v的点,因为这v个点互不可比,那这v个点肯定要同时选,所以其实相当求点权和最大的反链,这个写个sb动态规划就行了。Code:#include#definefo(i,x,y)for(inti=x;
Cold_Chair
·
2018-05-23 21:43
动态规划
数论杂集
bzoj5334 [
Tjoi
2018]数学计算(线段树)
线段树维护一下即可。删掉一个数就对应位置置1.#include#include#includeusingnamespacestd;#definelllonglong#defineinf0x3f3f3f3f#defineN100010inlinechargc(){staticcharbuf[1'9'){if(ch=='-')f=-1;ch=gc();}while(ch>='0'&&ch>1;buil
Icefox_zhx
·
2018-05-21 23:41
bzoj
线段树
bzoj5339 [
TJOI
2018]教科书般的亵渎(伯努利数)
可以发现结果就是求若干S(n,k)=∑i=1nikS(n,k)=∑i=1nik可以用伯努利数快速计算,见:portal#include#include#includeusingnamespacestd;#definelllonglong#defineinf0x3f3f3f3f#defineN60#definemod1000000007inlinechargc(){staticcharbuf[1'9
Icefox_zhx
·
2018-05-21 23:02
bzoj
组合数学
BZOJ5339: [
TJOI
2018]教科书般的亵渎-组合数学
传送门题意:在炉石传说中有这样的一个场面:n个随从,血量为1~n,现在去除m个随从,然后开始释放“亵渎”。每使用一张“亵渎”会获得一定的分数,分数计算如下:在使用一张“亵渎”之后,每一个被亵渎造成伤害的怪会产生xkxk的分数,其中x是造成伤害前怪的血量,k是需要杀死所有怪物所需的“亵渎”的张数。n≤1013m≤50n≤1013m≤50Solution:可以发现这是若干个形如Sum(n,k)=∑ni
Fizzmy
·
2018-05-19 22:59
组合数学
[BZOJ5339]-[
TJOI
2018]教科书般的亵渎-自然数幂和
说在前面me讨厌数学题!讨厌讨厌讨厌死了!题目BZOJ5339传送门看题可进传送门解法题目描述有点不清真其实稍微想一想就能发现,这个题就是要我们求自然数幂和假设我们已经会求自然数幂和了,这道题大概就这样做:枚举当前是第几次亵渎,记亵渎之前最高血量为qq,把qq拿出来求一次幂和,然后把那些不存在的怪的贡献用快速幂减掉。这样复杂度就是Θ(m2log2m+m∗δ)Θ(m2log2m+m∗δ)。δδ是指
泉華子
·
2018-05-19 15:52
------数论------
【HEOI2016&
TJOI
2016/BZOJ4552】排序 二分+线段树
原题走这里这题的操作是真的神奇。鉴于我们只有一组询问,我们可以二分第qq位的数于是我们的任务就变成了判断第qq位是否大于midmid由于序列中的数本身不会变,我们就只需要关心序列中的数是大于midmid还是小于等于midmid就行了。于是我们可以把整个整个序列变成一个01序列,大于midmid就是1,反之就是0我们明显可以通过线段树实现对01序列的局部排序。对于每一个排序操作,统计区间内1的个数,
CRTorlonia
·
2018-05-09 16:44
BZOJ 3998
TJOI
2015弦论
ProblemBZOJSolution建立后缀自动机,然后我们可以用类似二叉搜索树的思想。先排出拓扑序,然后将这个节点所代表的子串的个数处理出来,然后枚举第k小的是否在其中即可。我们不妨令g[u]表示从节点u开始能代表的后缀个数,那么可以做一个拓扑动规。我们容易得到方程:g[u]=sz[u]+∑u−>vg[v]g[u]=sz[u]+∑u−>vg[v]注意在计算重复子串时,要sz[f[i]]+=sz
Rayment_cc
·
2018-05-03 22:28
好题集
BZOJ
后缀自动机
[BZOJ3172][
Tjoi
2013]单词(AC自动机)
题目传送门题解AC自动机AC自动机第一题,感觉做起来非常不顺,感觉难点在于处理单词重叠的问题大体的思路应该是,我们把每个单词出现的字母在fail树上进行累加,然后建立bfs序,把单词的字母的ans累加到单词的第一个字母上(应该是这样吧?),输出答案;另一种实现方法:这是我刚开始想到的,在每个单词之间添加一个'#''#'分隔组成文章,在处理重叠单词上:我们的mp[k]表示与第k个单词相同的最靠前的单
A_Comme_Amour
·
2018-04-22 14:30
后缀数组
AC自动机
洛谷P3870 [
TJOI
2009]开关(洛谷P2846)(BZOJ1230)
线段树洛谷P3870洛谷P2846BZOJ1230线段树不解释。代码:#include#include#include#include#defineN100005#defineFinlineusingnamespacestd;structtree{intl,r,s0,s1,f;}t[N9)writec(x/10);putchar(x%10+48);}Fvoid_write(intx){writec
forezxl
·
2018-04-21 10:33
BZOJ
数据结构---线段树
洛谷
蒟蒻zxl的Blog专栏
做题的套路!
°线段树的01排序(以下部分来自于bestFy的洛谷题解,谢谢bestFy(虽然不认识这位大佬)%%%)参考题目:P2824[HEOI2016/
TJOI
2016]排序------------------
Eliza_Her
·
2018-04-18 21:34
思想
bzoj4889 [
Tjoi
2017]不勤劳的图书管理员(线段树套权值线段树)
相当于动态维护带权逆序对。交换x,y位置的数,只会对他们之间的数产生影响。分类讨论即可。我写的线段树套权值线段树,卡空间,需要写垃圾回收qaq复杂度O(nlog2n)#include#include#include#includeusingnamespacestd;#definelllonglong#defineinf0x3f3f3f3f#defineN50010#definemod1000000
Icefox_zhx
·
2018-04-17 20:13
bzoj
树套树
4552: [
Tjoi
2016&Heoi2016]排序
题目链接题目大意:维护一个1到n的排列,进行m次局部排序,最后求第q位置的数字题解:二分答案x,把序列变成a[i]≥x?1:0区间排序变成区间置0/1,维护区间0的个数就好了……我的收获:233#include#defineinitintl=t[k].l,r=t[k].r,mid=(l+r)>>1constintmaxn=1e5+1e2;intn,m,a[maxn],lambda,q;struct
Mmh2000
·
2018-03-28 20:59
4501-4750
bzoj3174 [
Tjoi
2013]拯救小矮人(贪心+dp)
设i出去之后j出去,i下面的人的高度和为s。则有s+a[i]+b[i]>=H,s-a[i]+a[j]+b[j]>=H。我们发现如果a[i]+b[i]>a[j]+b[j],则交换后肯定不会更差。因此我们贪心地按a+b从小到大排序。考虑dp[i],表示出去i个人之后的最大剩余高度。如果dp[j]+a[i].b>=H,则可以用dp[j]-a[i].a来更新dp[j+1]。#include#include
Icefox_zhx
·
2018-03-21 11:19
bzoj
贪心
luogu3875 [
TJOI
2010]被污染的河流(矩形面积并,扫描线+线段树)
就是求面积矩形并。wa了好久。我好菜啊。#include#include#includeusingnamespacestd;#definelllonglong#defineinf0x3f3f3f3f#defineN100010inlineintread(){intx=0,f=1;charch=getchar();while(ch'9'){if(ch=='-')f=-1;ch=getchar();}
Icefox_zhx
·
2018-01-01 21:29
其他oj
线段树
扫描线
【BZOJ3997】【
TJOI
2015】组合数学
Description给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走。问至少走多少次才能将财宝捡完。此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完。Input第一行为正整数T,代表数据组数。每组数据第一行为正整数N,M代表网格图有N行M列,接下来N行每行M个非负整数,表示此格子中财宝数量,0代表没有Outpu
dcx2001
·
2017-09-03 11:39
dp
递推与dp
bzoj 4001: [
TJOI
2015]概率论(找规律)
4001:[
TJOI
2015]概率论TimeLimit:10SecMemoryLimit:128MBSubmit:1033Solved:545[Submit][Status][Discuss]DescriptionInput
Jaihk662
·
2017-08-31 21:36
各种水题
luogu3847 [
TJOI
2007]调整队形(dp求变回文的最小操作)
操作一共有四种,但是我们本着简化的原则可以发现操作1,2即往数列里加数可以等效的被一步操作3即删掉你想加数对应的那个数来代替,所以无非就两种操作:1.改变一个数。2.删掉一个数。求最少经过几步操作可以使原数列变为回文的我们考虑dp[i][j]表示把i…j变成回文所需的最小步数,则如果a[i]==a[j]则dp[i][j]=dp[i+1][j-1]elsedp[i][j]=dp[i+1][j-1]+
Icefox_zhx
·
2017-08-25 22:12
其他oj
【bzoj3173】[
Tjoi
2013]最长上升子序列 Treap
原文链接:http://www.cnblogs.com/GXZlegend/p/6856502.html作者:GXZlegend题目描述给定一个序列,初始为空。现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置。每插入一个数字,我们都想知道此时最长上升子序列长度是多少?输入第一行一个整数N,表示我们要将1到N插入序列中,接下是N个数字,第k个数字Xk,表示我们将k插入到位置Xk
Dr_Nobody
·
2017-08-10 20:50
TJOI
2013 单词(AC自动机)
题目背景
TJOI
2013DAY1T3题目描述小张最近在忙毕业论文设计,所以一直在读论文。一篇论文是由许多单词组成的。但小张发现一个单词会在论文中出现很多次,他想知道每个单词分别在论文中出现多少次。
Amessal
·
2017-07-14 10:20
AC自动机
bzoj 4554: [
Tjoi
2016&Heoi2016]游戏 (最大流)
题目描述传送门题解对于每行每列以#为界限,分成好几个连通块,同一连通块中的点只能选取一个。位置都只能属于一个连通块。s->列的连通块,容量为1行的连通块->T,容量为1每个空地从他所属的列连通块->行连通块。然后求最大流即可。代码#include#include#include#include#include#include#defineN100003#defineinf1000000000usi
clover_hxy
·
2017-06-29 16:45
最大流
网络流
[BZOJ4555][
Tjoi
2016&Heoi2016]求和(NTT)
题目描述传送门题目大意:求f(n)=∑ni=0∑ij=0S(i,j)×2j×(j!)其中S(i,j)为第二类斯特林数,递推公式为:S(i,j)=j×S(i−1,j)+S(i−1,j−1),1≤j≤i−1边界条件为:S(i,i)=1(0≤i),S(i,0)=0(1≤i)题解感觉这题给出递推公式就是满满的恶意【有本事你自己推出来通项系列】第二类斯特林数的通项公式为S(i,j)=1j!∑k=0j(−1)
Clove_unique
·
2017-04-24 21:00
题解
FFT/NTT
[BZOJ4551][
Tjoi
2016&Heoi2016]树(dfs序+线段树)
题目描述传送门题目大意:给定一颗有根树(根为1),有以下两种操作:1.标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个结点,可以打多次标记。)2.询问操作:询问某个结点最近的一个打了标记的祖先(这个结点本身也算自己的祖先)。题解16省选竟然有无脑题。。搞出dfs序了之后就是线段树区间修改单点查询最大值问题学习了一下标记永久化代码#include#includ
Clove_unique
·
2017-04-23 20:51
题解
线段树
省选
dfs序
bzoj 4555: [
Tjoi
2016&Heoi2016]求和 (NTT)
题目描述传送门题解这道题解决的关键是知道第二类斯特林数的通项公式S(n,m)=1m!∑k=0m(−1)kC(m,k)(m−k)n然后将通项公式带入题目中的原式化简f(n)=∑i=0n∑j=0iS(i,j)∗2j∗j!∑i=0n∑j=0i1j!∑k=0j(−1)kC(j,k)(j−k)i∗2j∗j!∑i=0n∑j=0i∑k=0j(−1)k∗(j−k)ik!(j−k)!∗2j∗j!∑j=0n2j∗j!
clover_hxy
·
2017-04-16 23:29
FFT
TJOI
2014 拼图
题目大意给定n个拼图碎片,现在要用这些碎片拼出一个4×4的正方形,要求每个碎片都被用到。若只有一组解,输出方案。DataConstraintn≤16题解考虑将问题转化成精确覆盖问题。每个格子看成一列,因为每个碎片都要用到,所以每个碎片再开一列。每个碎片可能匹配的位置都开一行,可以覆盖的位置对应的列就是矩阵中的1.然后跑DLX即可。SRC#include#include#include#includ
Akakii
·
2017-03-30 12:40
搜索
舞蹈链
bzoj4552: [
Tjoi
2016&Heoi2016]排序
链接http://www.lydsy.com/JudgeOnline/problem.php?id=4552填坑今天七道题(6/7)。(看来是做不完了)题解二分答案mid,问题就成了判断第Q个数是不是大于等于mid,把小于mid的变成0,大于mid的变成1,排序过程就简化了,直接用线段树的区间赋值操作模拟就好了。最后check的结果就是Q这个位置上的数是否是1。代码//线段树#include#in
*ACoder*
·
2017-03-27 21:28
#
线段树
二分答案
【jzoj3741】【
TJOI
2014】【拼图(puzzle)】【搜索】
题目大意解题思路把填放状态压成二进制,直接搜索即可。code#include#include#include#include#include#defineLFdouble#defineLLlonglong#defineMin(a,b)((ab)?a:b)#defineFo(i,j,k)for(inti=j;i=k;i--)#defineFor(i,j)for(inti=Begin[j];i;i=N
inklutcuah
·
2017-03-25 14:28
jzoj
搜索
[BZOJ3998][
TJOI
2015]弦论 后缀自动机
题意求给定字符串的第k大子串看这里其实知道后缀自动机的性质后推敲一下还是蛮好理解的。他在胡说#include#include#include#include#defineN500010usingnamespacestd;structSAM_{intnext[N=26)return;putchar('a'+i);w=next[w][i];}}}SAM;intt,k,len;charA[N];intm
LowestJN
·
2017-01-30 19:52
后缀自动机
3997: [
TJOI
2015]组合数学
3997:[
TJOI
2015]组合数学TimeLimit:20SecMemoryLimit:128MBSubmit:806Solved:589[Submit][Status][Discuss]Description
CRZbulabula
·
2017-01-26 19:55
dp
[BZOJ3997][
TJOI
2016]组合数学 平面图
平面图相关从左下扫到右上即可#include#include#include#defineN1050usingnamespacestd;typedeflonglongLL;intv[N][N],n,m;LLF[N][N];voidut(LL&x,LLy){x=max(x,y);}intmain(){intT=0;scanf("%d",&T);while(T--){scanf("%d%d",&n,&
HbFS-
·
2017-01-20 21:55
数学
雅礼集训
bzoj 3998: [
TJOI
2015]弦论 (后缀自动机)
3998:[
TJOI
2015]弦论TimeLimit:10SecMemoryLimit:256MBSubmit:2024Solved:665[Submit][Status][Discuss]Description
clover_hxy
·
2016-12-20 22:31
字符串处理
后缀自动机
BZOJ3997: [
TJOI
2015]组合数学 解题报告
Description给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走。问至少走多少次才能将财宝捡完。对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完。题解貌似有个定理说在一个DAG中,最小链覆盖=最大独立集(这题不知道这个也行)观察这个网格图,因为每次只能向右或向下走,所以如果一对点,一个在另一个的左下方,那么走
L_0_Forever_LF
·
2016-10-10 13:37
BZOJ
DP
bzoj 3999: [
TJOI
2015]旅游(树链剖分)
3999:[
TJOI
2015]旅游TimeLimit:10SecMemoryLimit:256MBSubmit:423Solved:214[Submit][Status][Discuss]Description
clover_hxy
·
2016-10-01 22:42
线段树
树链剖分
【
TJOI
2015】【BZOJ3998】弦论
DescriptionSolution后缀三姐妹都可以做这题。我选择最短的。后缀自动机不会的参照后缀自动机学习小记建出后缀自动机。先对后缀自动机拓扑一下(其实是为了方便求构出的字符串的个数和right集合的个数),其实不用真的求拓扑序,把len排个序就好了,很显然len的顺序就是拓扑序。然后求出当前这个状态right的集合的大小(表示这个状态的字符串出现了多少次)。那么求答案一个dfs就可以了,但
Facico
·
2016-08-16 20:57
省选
BZOJ
后缀自动机
【bzoj4554】【
Tjoi
2016】【Heoi2016】【游戏】【二分图匹配】
题目大意给出一个图,有一些石头不可炸,一些软石头可炸但不可放炸弹,一些空地可放炸弹。用最多炸弹使两个炸弹互相不可炸。题解对于横竖连通的块标号,可放炸弹的点横竖相连,表示可以放炸弹,做二分图最大匹配即可。code#include#include#include#include#include#defineLLlonglong#definefo(i,j,k)for(inti=j;i=k;i--)usi
inklutcuah
·
2016-07-12 19:37
网络流
bzoj
【bzoj4552】【
Tjoi
2016】【Heoi2016】【排序】【二分答案】【线段树】
题目大意给出长度为n的序列,有m个排序操作,对一个区间升序或降序排序,求操作完某一位的值。题解一个非常不显然的性质,本题满足二分性质。二分一个答案,如果原数大于或等于答案就标记为1,不然标记为0。排序完可以知道目标位到底是大于等于还是小于答案,适当调整答案即可。code#include#include#include#include#include#definefo(i,j,k)for(inti=
inklutcuah
·
2016-07-12 16:12
bzoj
二分
三分
数据结构
【bzoj4551】【
Tjoi
2016】【Heoi2016】【树】【线段树】
题目大意给出一棵有根树,有很多操作,给一个点打标记,查询到跟路上最近那个点打了标记。题解我的做法是先搞出dfs序,打标记只会影响子树,线段树区间修改就行了,查询就是单点查询。注意空点不下传标记,不然空间不够。更好的做法是离线用并查集维护。打标记相当于把一棵子树从整棵树中断开,倒着做,先断开子树。查询就是getfather,答案就是father的father。修改就是合并子树,并查集连一下,应为修改
inklutcuah
·
2016-07-12 11:24
bzoj
数据结构
【bzoj4553】【
Tjoi
2016】【Heoi2016】【序列】【树套树】【线段树套线段树】
题目大意给出长度为n的序列a,有m次变化。每次变化把a[x]改成b[x],一个位可以多次修改,变化相对独立。选出最长字串,在m次变化与原串中都是不下降的。题解通过分析可知,设f[i]为前i位中一定选了i所形成的最长不下降字串的长度,f[i]可以转移到f[j](j>i)当且仅当满足三个条件。a[i]#include#include#include#include#definefo(i,j,k)for
inklutcuah
·
2016-07-12 11:17
bzoj
数据结构
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他