自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TA

A Lannister always pays his debts

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

原创 再见CSDN

迁至这里.

2018-12-19 15:01:33 802 2

原创 [code+月赛]Yazid的新生舞会

用很有趣的方法做了这道题。标算非常厉害,并没有想到。。 考虑求众数为x的区间数量,由序列a构造序列b,bx(i)=−1+2∗[a(i)==x]b_x(i)=-1+2*[a(i)==x],作前缀和sx(i)=sx(i−1)+b(i)s_x(i)=s_x(i-1)+b(i)。 ans=∑x=0n−1∑1≤j<i≤n[sx(i)>sx(j)]ans=\sum_{x=0}^{n-1}\sum_{1\le

2018-01-02 02:43:44 934

原创 51nod算法马拉松32

好像已经一年没更新这个blog了。。 临近期末,无心预习。。就打了场51nod。。感觉要退学了。。A. 先把A和B的特殊表示法加起来,从前到后处理每一位,需要维护一个向前延伸的最长的01间隔的序列。 复杂度O(n)O(n).调了一晚上+一上午被告知数据错了。。为什么题解说直接模拟就可以了呀??怎么模拟啊?? B. 想了一天,Google了一发才发现原来有个叫Prüfer编码的东西。。(bz

2018-01-01 13:19:14 818 1

原创 tc-srm704-div1-1000 解题报告

题意:构造一个点数不超过20无重边无自环的有向图,节点编号从0到n-1,使得从0到n-1的哈密顿路径数量恰好为k。感觉完全没有思路。。不知道怎么构造。 去看了下别人的代码,原来可以做成1<-2<-…<-18一条路径,然后1-18都向编号比它大的节点连边。这样的话往回走就只有唯一的路径,所以假如说我当前在i,走到了j,j>i,那么就需要立刻从j到j-1直到i+1,然后再往后走。这样就相当于每个节点有

2017-01-04 10:48:43 1115

原创 tc-srm704-div1-500 解题报告

题意: 给定n,K。有q组询问,第i组询问是求∏nj=1xj(0≤xj<K)=vi\prod_{j=1}^nx_j(0\le x_ j<K)=v_i的解的数量。 1≤n≤50,1≤K≤109,1≤q≤100001\le n \le 50,1\le K \le 10^9,1\le q \le 10000我本来是这样想的: 显然最终答案只与gcd(v,K)有关。 那么令f(i,j)为前i个数乘积

2017-01-02 09:59:00 984

原创 总结一下。

上午跟学弟考了一次noip模拟赛。。。 跪成狗了。最近状态好烂!T1:少考虑了一种情况,只有40分。 T2:题目里明明写着k≥1,结果第一个点k=0。只有90分。 T3:写出来以后发现想错了。。于是又写了一遍,最后10min终于过了样例。结果数组开小了。。只有50分。总结: ①一定要仔细考虑清楚每种情况再写! ②如何做一道题? 仔细读题=>模拟一下样例/看看样例解释看看有没有读错题=>想

2016-11-09 12:47:28 1249 1

原创 [hackerrank w25]DAG Queries 解题报告

又用bitset强上了一道题好开心啊~(然而这题标算似乎就是bitset?)如果暴力的话,可以用bitset,但是空间爆炸;所以我们先解决一下空间问题。 如果考虑对操作分块的话,我们可以只用处理所有节点能否由块内的操作节点抵达,这样首先就可以解决bitset的空间问题!然后一开始我是这样想的: 如果我们可以O(n)O(n)处理出每一个块的操作结束后的aia_i的话,那么就好办了!而这个似乎很容易

2016-11-08 21:32:44 1239

原创 [51nod]矩阵中不重复的元素

如果我们将每个数a分解质因式:a=∏∞i=1pkiia=\prod_{i=1}^{\infty}p_i^{k_i},那么任意一个数a都可以看作一个无穷维的向量(k1,k2,...)(k_1,k_2,...),其中第i维的系数表示从小到大第i个质数在a中的指数。这样的话aba^b就可以看作是向量的数乘,所以如果有ab11=ab22a_1^{b_1}=a_2^{b_2},就必然有a1,a2a_1,a_2

2016-11-07 20:45:05 1540

原创 一道奇怪的题

今天reflash给我出了一道题: ∑∏ki=1xi[xi≥1][∑ki=1xi≤S]modpk,S≤1018,p≤107\sum \prod_{i=1}^kx_i[x_i\ge 1][\sum_{i=1}^kx_i\le S] \mod p \\ k,S\le 10^{18},p\le 10^7 我一开始是这样想的:如果F(x)=∑∞i=0ixiF(x)=\sum_{i=0}^\infty i

2016-11-03 21:34:48 959

原创 [HNOI2012]矿场搭建 解题报告

第一次听说点双连通分量这个概念。。 点双连通分量是说这个连通分量中任意两个点之间都存在两条不经过同一个点的路径。 点双连通分量比边双连通分量要麻烦很多的问题在于不能缩点,因为两个点双连通分量可能会由一个割点连起来,当然也可能由一条桥边连起来,这样的话就比较麻烦。这个题的话,假如不存在没有割点的点双连通分量。对于那种只有1个割点的点双连通分量,假如我把这个割点删掉,那么它必须是要从内部找一个点的;

2016-11-02 18:53:29 1387

原创 [codeforces704B]ant man 解题报告

题意 求1~n的排列中∑n−1i=1∣∣xpi−xpi+1∣∣+[pi<pi+1](dpi+api+1)+[pi>pi+1](cpi+bpi+1)\sum_{i=1}^{n-1} \big|x_{p_i}-x_{p_{i+1}} \big|+[p_i<p_{i+1}](d_{p_i}+a_{p_{i+1}})+[p_i>p_{i+1}](c_{p_i}+b_{p_{i+1}})的最大值,要求p1=

2016-10-21 10:02:00 1470 1

原创 [bzoj4643]卡常大水题 解题报告

我们考虑从小到大枚举A的最大值,那么B的最大值必然是不升的,这样我们才能得到更优的解。我们便可以对B维护一个指针。那么就是考虑插入一条边、删除一条边,求整个图是否是一个强连通分量。 本来是想用什么别的方法求一下。。但是实在是不会做了,所以就只好每次都暴力tarjan试一下。结果竟然就这么a了。。 时间复杂度O(n4)≈5∗108O(n^4)≈5*10^8。代码:#include<cstdio>

2016-10-10 19:54:03 1217

原创 [codeforces724e]Goods transportation 解题报告

这题好神呀。首先这是一个网络流模型,考虑每个点都向编号比它大的点连一条容量为c的边,然后如果pi≥sip_i\ge s_i,就从source向i连一条容量为pi−sip_i-s_i的边,否则就从i向sink连一条容量为si−pis_i-p_i的边,这样的话最大流就是答案。 但是这个图太大了,不能直接跑最大流,也无法优化。 所以我们可以转而考虑最小割,我们发现如果我们知道了割中的点是哪些,其实是可

2016-10-10 19:35:34 1372

原创 calc(陈立杰) 解题报告

感觉最近状态真是烂到爆。。首先不妨令序列有序,然后再乘n!即可。一上来先想到可以倍增,设f[i][j]表示在1~j中选i个数,那么有j->2j,便可以通过枚举一边选了几个得到。但是算错了复杂度以为是O(n3logn)O(n^3\log n)的。。(矩阵乘习惯了一倍增就感觉是三方挂logn。。)(没想到看了题解以后这竟然就是标算。。)然后又想,既然倍增是三次方的。。。那只能看看暴力转移了。f(i,j)

2016-10-08 07:01:11 6580

原创 [51nod]算法马拉松18 总结

第一次打马拉松。。 a 一看题。。什么鬼。。 n=4竟然是无解,第一个点给了一个n=5的,好像是构造的挺有规律的样子。。 那就偶数无解,奇数照着他的构造方法写一发吧。。 怎么a了?不管了。。既然结束了还是要回来好好想一下是什么情况的。 偶数肯定是无解的,因为一共有n(n−1)2n(n-1)\over 2条边,那么每种颜色的边出现次数相等的话,就意味着每条边应该出现n−12n-1\over

2016-09-24 15:20:51 1386 4

原创 [bzoj4621] Tc605 解题报告

。。感觉这题跟zj的那题好像。。然后就在想区间dp什么的。。然后突然发现顺着dp就可以了。。 f(i,j,k)表示位置i最终变成了位置j上的数操作了k次的方案数,那么转移就是f(i,j,k)−>f(i+1,j,k)[aj>ai+1]−>f(i+1,j′,k+1)[j′>j][aj′≥max{amin(j′,i+1) max(j′,i+1)}]f(i,j,k)\\->f(i+1,j,k)[a_j>a

2016-09-23 08:24:07 1331

原创 [ZJOI2016]线段树 解题报告

。。很久以前看过题面然后没有仔细想,再做的时候忘了序列是随机的了。。然后怎么搞都是O(n4)O(n^4)的。 我们可以将状态设为f(x,i,l,r),表示在i次操作后,[l,r]<x,l-1和r+1大于等于x的方案数。(不妨认为a[0]=a[n+1]=∞a[0]=a[n+1]=\infty)这样的话假如说有跨越区间端点的操作,那么就一定会使操作中的数≥x。然后令g(x,j)表示让位置j最终<x的方

2016-09-20 10:48:38 1909

原创 [bzoj4664] Count 解题报告

第一眼看就感觉这题好像bzoj4498魔法的碰撞,但想了很久感觉用我那个题的做法好像并不能做。。结果最后发现好像还是可以做哒!首先按h排序,然后设f(i,j,k,o)表示前i个数,在最后的排列中被分成了j段,当前的混乱度是k,目前已经有o个边界(o∈[0,2]o\in [0,2])。 那么f(i,j,k,o)−∗(2−o)−>f(i+1,j,k+(hi+1−hi)(2j−o),o+1),o<2−∗

2016-09-11 21:18:14 1144

原创 [Jsoi2013]游戏中的学问 解题报告

其实是很简单的题,一开始想的有点麻烦了。。一开始是这么想的。。: f(k,n)=∑i=3n(n−1i−1)(i−1)!f(k−1,n−i)=∑i=3n(n−1)!(n−i)!f(k−1,n−i)f(k,n)=\sum_{i=3}^n\binom{n-1}{i-1}(i-1)!f(k-1,n-i)\\=\sum_{i=3}^n{(n-1)!\over (n-i)!}f(k-1,n-i)f(k,n)n

2016-09-11 20:43:52 863

原创 [bzoj2861] 双向边定向为单向边 解题报告

这题搞了好久。。首先一条双向边(u,v)可以变成单向边的条件是存在一个经过这条边的环,只需要按这个环的方向把这个环上的所有双向边变成单向就可以了,如果这个环上都是双向边,就随便定一个方向就可以了。所以我们考虑将双向边拆成两条单向边dfs,这样树边至少存在一个向下的方向,但也有可能是向下的单向边。 但是考虑非树边的时候首先注意到一件事情,就是两条非树边之间可能互相影响,就是说一条非树边可能不能与树边

2016-09-11 20:28:53 1391

原创 [uoj228]基础数据结构练习题 解题报告

这题好厉害呀。。看完题一看。。相邻两个数开根号的话差会由a-b变成a√−b√\sqrt a -\sqrt b,相当于除了一个a√+b√\sqrt a+\sqrt b,这样的话很快差就要变成0了,傻逼题呀!。。时间复杂度O((n+m)lgnlglgn)O((n+m)\lg n\lg \lg n) 然后写完一交,70. 一看数据。。差为1…卧槽?! 原来当差为1的时候开完根号可能差还是为1,就是如

2016-09-11 16:32:53 1767

原创 [bzoj3026] 楼梯染色 解题报告

这题题意什么鬼呀。。 X XX XXX XXXX XXXXX 意思是形如这种的楼梯,然后要分成n块矩形。 显然每一行最后一个X会分属不同的矩形。 那么我们考虑最上面那个点所属的矩形, X XA XAA CCCC CCCCC 那么其实它会把楼梯分成两部分,显然是不会有矩形跨越A和C的。因为假如说有矩形从A那里下来了,那么他显然不能包含最左面的C,那么最左边的C就无法被包含了

2016-09-11 16:12:10 732

原创 [Pa2013]Karty 解题报告

一上来脑残,以为把边界包一圈 _ ,然后纵向最近的两个 _ 的距离就是所求的r,横向最近距离就是c。下面先给出一个反例。 n=m=7. XXXXXXX XXXXXXX XX_ XXXX XXXX_ XX XXX_ _ XX XXXXXXX XXXXXXX 在上例中,横向、纵向最近的两个_的距离都是2,但2*2显然是不对的,答案应该是1*2.我们首先观察到一个性质,就是其实我们只需要

2016-09-07 19:51:53 712

原创 [NOI2009]管道取珠 解题报告

这题好神啊。。 如果直接dp的话,有一个重复计算的问题很难避免。 所以这题有一个非常神的转化是可以看作是两个人在取,等于两个人取的相等方案的乘积。这样的话,做到最后当然是等于∑ki=1a2i\sum_{i=1}^ka_i^2,看上去并没有什么卵用。但是它的神奇之处在于可以避免重复的问题,可以直接累计。 转化之后问题就变得很简单了,我们设f(l,i,j)表示总共选了l个,其中第一个人从上管道选了

2016-07-13 19:14:35 1351 1

原创 [fzu2016]How many tuples 解题报告

这题tm什么鬼啊。。101010^{10}的做法竟然500ms ac。 而且更奇怪的是。。似乎别人都打了一个表,他们都是怎么做的呢?直接裸反演: ∑i=1μ(i)∏j=1m⌊aji⌋\sum_{i=1}\mu (i) \prod_{j=1}^m\lfloor {a_j \over i} \rfloor 这样如果不考虑求s(n)=∑ni=1μ(i)s(n)=\sum_{i=1}^n \mu (i

2016-07-07 18:16:35 983

原创 [bzoj4635]数论小测验 解题报告

感觉自己好蠢只会反演。。跑了整整10s。。ans=∑k=lr∑i=1⌊mk⌋μ(i)⌊⌊mk⌋i⌋nans=\sum_{k=l}^r\sum_{i=1}^{\lfloor {m \over k} \rfloor }\mu (i) \lfloor {\lfloor {m\over k}\rfloor \over i}\rfloor^n 这样时间复杂度就是O(∑m√i=1i√+∑m√i=1mi−−√)

2016-07-05 11:23:28 919

原创 计蒜之道2016 遗失的支付宝密码 解题报告

感觉这题好厉害。。我考试的时候一直在想kmp、sa之类的,完全想偏了。。想到容斥也没有想到可以这么搞。 注意到其实square说的是字符之间的相等关系。所以如果我们考虑至少有哪几个位置是square,那么就可以求出字符串中有几种不同的字符,那么方案数就是m不同字符种数m^{不同字符种数}了。至于字符种数,显然可以通过并查集求出来。 这样时间复杂度是O(n22n2log2n)O(n^22^{n \

2016-06-14 19:20:31 1550 2

原创 [Ahoi2014]奇怪的计算器 解题报告

感觉这是一道非常好的题,不过我看几乎所有人都是把它当傻逼题写的,为出题人感到遗憾。一个很简单的性质是无论如何操作,每个数的相对大小是不变的,所以我们每次改变的都是一个区间。所以我们维护一个标记(k,b0,b1)(k,b_0,b_1)表示对这个区间里的数x的操作为先*k,然后+b0x+b_0x,然后+b1+b_1。这样的话对于当前在节点的标记(k,b0,b1)(k,b_0,b_1),然后再加上一个新的

2016-06-01 22:15:00 1300

原创 [HNOI2011]XOR和路径

拿这题+JLOI的装备购买学了下高斯消元。这道题的话,非常神奇一个地方在于它的状态。 单独考虑二进制的每一位,那么每一条边的权值就只有0、1之分了。 设f(x)表示从x走到n是1的概率,那么就有f(x)=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪0∑(u,v)∈E∩x==u{f(v)1−f(v),w(u,v)=0,w(u,v)=1degree(x),x=n,x≠nf(x)=\left\{ \begin{alig

2016-06-01 20:43:33 1067

原创 BSG白山极客挑战赛D 解题报告

这题关键当然就在那个非常神的性质。其实,对于一棵树来说,我们在上面随便找一个点(可以是边上的点任意一点),也就是可以选无穷多个点,那么距离这个点最远的点一定是一条直径的一端。且任意一条直径都存在一个端点是距离这个点最远的点。 我们考虑距离任意一点x最远的点y,假设有一条直径是(a,b)。(下面我们用(a,b)来表示两点之间的路径,用|(a,b)|来表示这条路径的长度)。 那么我们分两种情况考虑。

2016-06-01 14:40:16 2616

原创 [bzoj4314] 倍数?倍数! 解题报告

感觉完全不会做。。看讨论区里有大爷用母函数做的。。完全不会母函数,所以想看看官方题解。。但是官方题解要登录topcoder,注册还得翻墙,然后还是英文,搞了好久终于看懂了。感觉每一步都非常神。。 我们要求的是集合的个数,集合是无序的,这并不好求。我们可以变无序为有序,先求有序集合的数量然后除以k!。 考虑一个元素互不相同的长为k-1的序列,如果说我们要求长为k的序列mod n=0的话,实际上最后

2016-05-18 19:27:52 1506

原创 [SDOI2016]sequence 解题报告

考场上一直在试图调t3常数。。还有1.5h的时候才看到这个题,感觉是个很麻烦的网络流,强行写想起R1网络流写跪的经历还是写了暴力。。 然而暴力写起来并不比标算好写,考场上写残了好多地方。 要是一上来先切3h这题就好了。。24.doc题解没认真听。。 说一下我的想法。 最蛋疼的地方在于处理字符串,要先把每行列中回文串删掉。注意到每个行列只有两种选择,这显然是对应网络流中属于S或T。然后每行列建

2016-05-17 19:18:01 1075

原创 ctsc&apio2016 总结

cstc day1t1没想到可以只排一次序所以只会O(nlog2n)O(n\log^2n)的,然后看坐标范围是2∗10122*10^{12}叉积爆了long double还写了个高精度。。然后其实是横坐标范围10610^6,纵坐标范围2∗10122*10^12,叉积只有2∗10182*10^{18}long long都没爆。。。所以本来100就只有75了。。 t2把n和m看反了竟然还过了样例。。连

2016-05-11 11:07:36 1109

原创 [Baltic2014]sequence 解题报告

想了很久还是不会。。然后开始各种乱搞全都不行。。 最后看了题解感觉好厉害!首先我们将问题放缩。设x的每一位的数字集合是S(x),则对于给定数列{Bi}(i∈[0,k))\{ B_i \}(i \in [0,k) ),Bi∈{0,1,2,3,4,5,6,7,8,9},∀i∈[0,k)B_i \in \{ 0,1,2,3,4,5,6,7,8,9\}, \forall i \in [0,k),要求Bi∈

2016-05-11 10:42:20 2501

原创 关于树状数组一些有意思的东西

嘛~最近刚刚学会树状数组,写个blog记录一下心得。树状数组呢,核心是一个叫lowbit的东西,lowbit(x)=x&-x=x的最后一位1的大小。 一、一个经典问题 一个初始值为0的k位计数器,要求支持n次+1操作。时间复杂度?经典解法: 法I:考虑第i位的改变次数,可得O(∑k−1i=0n2i)≤O(∑∞i=0n2i)=O(n)O(\sum_{i=0}^{k-1}{n\over 2^

2016-04-28 09:23:32 2230

原创 [ONTAK2010]Highways

想学线段树合并找的一个题。。没想到是个傻逼题。这题题意好像有问题:额外的点对和查询的点对都不会是同一个点。设x的dfs序为dfn(x),x的子树中dfs序最大的节点的dfs序为dr(x)。将额外的边(u,v)看作点(dfn(u),dfn(v))(dfn(u)≤dfn(v))(dfn(u),dfn(v))(dfn(u)\le dfn(v))。对于一次查询(u,v)(dfn(u)≤dfn(v))(u,v

2016-04-27 14:52:16 643

原创 [spoj11414] combat on a tree 解题报告

拿来学了下线段树合并。 注意到当我们对线段树打反转标记,它节点的位置就改变了。那么我们线段树合并复杂度分析的那一套理论还适用么?答案是适用,因为我们可以认为所有节点都是打完所有标记以后的,就是不打标记合并,这样做的话它的合并其实是和打标记之前的合并是对称的,因为这棵树是一棵满二叉树。 代码:#include<cstdio>#include<iostream>using namespace s

2016-04-27 11:04:46 734

原创 [Poi2011]Tree Rotations 解题报告

拿这道题来学了一下线段树合并。 主要是照着这个课件学的,但是他那一句 整个过程的开销不会比向一棵空树顺序插入n个整数来的大我完全没有看明白。。自己想了很久,终于想明白了。 之前有一句话是很关键的: 合并的开销正比于两棵树的公共节点数所以我们考虑线段树中一个节点[l,r],它作为公共节点出现的次数是多少呢?显然是将[l,r]中所有元素合并的代价,就是r-l次!所以总的时间复杂度就是O(

2016-04-27 08:28:04 1011

原创 [Hnoi2016]序列 解题报告

我们考虑从左往右扫右端点和从右往左扫左端点的两遍扫描线。(以下选取从左往右的扫描线来说明)考虑每个点向它左边第一个比它大的点连边形成的树。设i左边第一个比它大的点的坐标是

2016-04-26 10:44:54 1377

原创 [bzoj3744]Gty的妹子序列 解题报告

比较显然的做法是用bit维护做到O(nlog−−−√n)O(n\sqrt \log n)。 但是。。作为一名理论计算机科学家傻逼,我们需要O(nn√)O(n\sqrt n)的做法,注意到如果我们把(i,ai)(i,a_i)看成点,实际上要求O(1)O(1)询问一个矩形内点的个数,这个显然可以用可持久化分块来搞,维护每个块内的前缀和和所有块的前缀和——但是空间复杂度是3nn√3n\sqrt n,ML

2016-04-26 07:22:08 844

空空如也

空空如也

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

TA关注的人

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