自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

15068475758的博客

这个人很懒,什么也没有留下

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

原创 [POJ1741] Tree

这是一道点分治模板题,由于写题要用到,我就来学了学点分治,然鹅这段时间POJPOJ在维护,所以这里就不给出题目的链接了。╰( ̄▽ ̄)╭Description    给定一棵nn个节点的树,每条边都带有一个权值,问两点之间距离小于等于kk的点对有多少个。(n≤3∗104,k<108,w≤103)(n \le 3*10^4 , k \lt 10^8 , w \le 10^3)Solution    看了

2017-10-20 18:56:30 214

原创 2017/9/30 在线赛(A~E)

这是国庆放假前的一场国庆欢乐组队赛,一点也不欢乐(ಥ﹏ಥ),全机房一起比,我跟南佬一队。比的时候不上心,卡在了C题,二分想到之后就想不出来了,我也是服了我自己。因此比的很臭,才300分。╰(‵□′)╯    老师说只用把前五题写掉就好了,我也就只写了五题,其实都不难,就是比的时候不一定想得到(因为马上就要放假了,大家心里不都想着回家怎么玩么ヽ(゚Д゚)ノ,不过也许有大佬会想着怎么认真学习_(:з」∠

2017-10-03 16:37:18 451

原创 2017/9/15 离线赛

好久没有写离线赛的总结了……自从前几次遇到很难理解的题目就没写了,现在开始重操旧业吧。不过,现在不想像以前一样写那么详细的解释了,就写写简单的总结吧。T1 最长不下降子序列    nn这么大,很容易发现整个序列存在循环,因为同一个数经过一次计算得到的数是一定的,而且DD只有150,所以循环节最长不超过150个数。于是整个序列就被分成了三部分,最前端不在循环节里的部分,中间超多个循环节,以及末尾一个不

2017-09-17 21:41:57 292

原创 [HDU 3507] Print Article

Problem Link    这题应该可以算是斜率优化dpdp的入门题了,为了巩固斜率优化dpdp的方法,我特此写一篇题解表明我是真懂了。Description    给定nn和mm以及一个含nn个元素的序列,要求依次取完所有的数,每次取一段连续的数的花费是,这一段中所有数之和的平方加上mm,求取完所有数的最小花费。Solution    这道题显然是道dpdp题,而且O(n2)O(n^2)的dp

2017-09-08 15:06:15 289

原创 区间第K值——主席树详解

序:这是一篇迟到的题解,机房的小伙伴们系统地学主席树应该是七月份的时候,然而我没赶上趟,当时压根没看懂主席树是什么东东。 昨天晚上决定重新来过,于是请教了一位大神1113(这是他的博客,不过好像因为手机验证的原因很久没有更新了),他告诉我了主席树的始末,然后我就秒懂了,原来并没有想象中的那么复杂,相信看完了这篇题解,你也会这么觉得的。下面开始正文:Description    给定一个长度为nn的序

2017-09-05 15:30:01 642

原创 2017/9/2 离线赛

T1 UOJ#12 猜数    这题简直是送分题,代码又短又好想,我这样说怕不是要被打。    这题应该算是小学奥数题,由于a、ba、b都是gg的倍数,而且a∗ba*b=g∗lg*l,所以a∗b/ga*b/g肯定是gg的倍数,即ll是gg的倍数。接下来就是一个性质:当两个数的乘积一定时,两个数的差越大,和就越大。下面是简单的证明:    我们假设两个数分别是aa和bb,已知a∗ba*b=kk。通过均

2017-09-03 20:55:07 425

原创 2017/8/26 离线赛

这套题全是SHOI2015的题,题目描述真是绝了,都是“发明家SHTSC公开了他的新发明”。T1 SHOI2015 自动刷题机    这道题最关键的地方就是,要理解题目的单调性,就是对于每个nn,能切的题数是单调递减的。我们只要二分找到题数等于kk的nn就行了,然后再二分找到最大的题数大于等于kk的nn就是nn的最大值了,二分找到最小的题数小于等于kk的nn就是nn的最小值。注意一点:可能没有满足条

2017-09-01 21:41:55 239

原创 2017/8/20 离线赛

T1 SDOI2011 打地鼠    这题我刚开始题目看错了,傻愣了半个多小时,我以为每次锤之前都可以改变锤子的规格,然后就很懵逼,连暴力都不会敲了。后来我想想第一题应该不会这么难吧,于是重新看了一下题目,果然,选完锤子的规格后就不能变了,那问题不就变得很简单了嘛。    首先我们很容易想到,选完锤子的规格后,敲击的方式是唯一的,我们只要模拟过来就行了。因为能锤到左上角那个点的方法只有一种,就是以它

2017-08-22 08:04:30 414

原创 2017/8/19 离线赛

T1 LOVE    题目很简单,就是敲个高精麻烦,由于我敲的是一位存4个数字的高精,所以输出答案时除了首位都要用%04d输出,我比赛的时候就卡在这儿了,卡了半个小时,刚开始一直以为是高精或者算法的错误,但万万没想到败在了输出上QAQ。算法部分比较好想,我们不能直接枚举四个字母,那就把LOVELOVE拆成LOLO和VEVE,我们维护LL的前缀和以及EE的后缀和,再枚举OO或VV求出LOLO的前缀和或

2017-08-20 10:22:05 254

原创 2017/8/14 离线赛

这次每题我都切分了,因为忒难了QAQ。T1 完全图计数    P1:第一档就枚举各个集合嘛,总共是2n2^n个集合,暴力dfsdfs即可。    P2:第二档的话我用了dpdp,状态里存下能进入集合的点即可。    P3:满分要用到折半枚举,因为直接枚举的话是2402^{40},如果拆成两半话就是两个2202^{20},那么怎么求出答案呢。对于前20个数的枚举我们可以直接dfsdfs,求出res[i

2017-08-16 16:03:45 309

原创 2017/8/11 离线赛

T1 小宝卖猪    考试的时候因为忘乘上tt结果爆零了,我也是很难过啊。题目很好想,对于ii位置,我们选择重量为xx的猪卖出,则收益为(Di−Pi∗t)∗x(D_i-P_i*t)*x,所以对于任意的重量的猪,在ii位置卖出Di−Pi∗tD_i-P_i*t是不变的,我们只要对于每个点选出最合适的猪就好了。也就相当于是两个数组,一个是每个位置的Di−Pi∗tD_i-P_i*t数组,一个是WiW_i数组

2017-08-14 15:57:19 540

原创 2017/8/9 离线赛

T1 01完美矩阵    这题考试的时候枚举完两行,找出全1的列,就懵逼了。没有继续往下想,真是可惜了,实际上蛮容易的。枚举上下两行,然后扫每一列,遇到一条全是1的列就塞进数组,遇到上下两行有00的列就求答案,再清空,这显然是正确的。因为能组成矩形的两列之间一定是连续的1。求答案的时候,只要存一个前缀和的cntcnt数组就行了,假设求到当前列的前缀和为sumsum,那么这列能形成的矩形数就是cnt[

2017-08-13 20:27:39 371

原创 [HDU6065] RXD, tree and sequence

Problem LinkDescription    给定一棵有nn个节点并且以1为根的树,根的深度为1。给定1n1 n的Solution    首先我们要知道一个重要的性质:对于一个连续块,它最终的LCALCA一定可以由这个连续块内的相邻两个元素求LCALCA得出。这里简单证明一下:我们不妨设一个连续块的LCALCA为AA(这里假定AA不是连续块中的点),那么这个连续块中的点一定分布在AA的子树中

2017-08-10 19:41:05 547

原创 2017/8/7 离线赛

T1 Codechef JAN17 务农政策    这题的解法很好想,就是每次询问时枚举每个矩形,然后求出最小的花费, 每个矩形的终态就是这个矩形中最高的那块,我们只要用二维前缀和维护每个矩形的权值和,再求出每个矩形中最大的权值即可。难点在怎么求每个矩形的最大权值,这是一个二维的部分最大值。由于之前写了球染色这道题,所以脑子里印象比较深刻,我们立马想用单调队列求出这个最大值,但是发现二维的不好维护,

2017-08-09 11:21:29 317

原创 2017/8/5 离线赛

T1 文件解压    这题之前写过,记得当时蠢萌地敲了一个很复杂的循环,并且把答案存了下来,现在想想,当时真是有毅力。     由于题目输出数据不超过40KB40KB,算一下也就只有4096040960个字符,所以不用害怕超时,我们只要递归跑一下就好了。定义solve(intL,intR,intp)solve(int L,int R,int p)表示解压pp次[L,R][L,R],然后扫pp次,每次

2017-08-07 16:02:03 330

原创 [HDU6071] Lazy Running

Problem LinkDescription    给定KK,d1,2d_{1,2},d2,3d_{2,3},d3,4d_{3,4},d4,1d_{4,1}(du,vd_{u,v}表示uu到vv的距离),每次可以从ii跑到i−1i-1或i+1i+1,并且起点和终点只能22,每个点可以经过任意次。要求在四个点之间一直跑,直到跑过的路程大于或等于KK。求满足条件的最小路程。Solution    我们

2017-08-05 15:26:18 305

原创 [HDU6070] Dirt Ratio

Problem LinkDescription    给出一个长度为nn的序列,寻找一个区间,XX表示这个区间不同元素的个数,YY表示区间的长度,求y=XYy=\frac{X}{Y}的最小值。Solution    暴力是O(n2)O(n^2)的,枚举左端点和右端点即可。对于求分数最值的问题,我们很容易想到二分答案(因为之前写过好多道这样的题目)。但最重要的不是想到二分,而是如何checkcheck

2017-08-04 21:33:44 653

原创 [HDU6074] Phone Call

Problem LinkDescription    给定一棵有nn个节点的树,还有mm个点集,各个点集里的点可以互相传递消息,并且每次传递消息的花费为ww,描述每个点集我们给定a、b、c、d和wa、b、c、d和w,表明这个点集是由aa到bb的路径上的点并上cc到dd的路径上的点构成的,各个点之间传递消息的花费为ww。一开始只有11能传递消息,被传到消息的点也能传递消息。求出最多有多少个点能被传到消

2017-08-04 15:37:37 422

原创 2017/7/31 在线赛

T1 射气球    对于一个气球,它可以由它前面第一个比它高1个单位的气球转过来,我们只要处理出每个气球的前一个气球即可,然后用并查集就可以把一串气球并到这一串气球中最高的那个,我们只要求有多少串气球即可。int n,ans;int A[M],pre[M];bool mark[M];vector<int>G[M];int get_pre(int v){ if(pre[v]==v)re

2017-08-04 13:53:47 295

原创 2017/7/29 离线赛 总结

T1 UOJ136 键盘    本着贪心的思想,我先斜着走到顶,然后直走到终点,显然这是最优的,但是我忽视了斜着走的最后一步可以和直着走的第一步合并, 我错误地把两个过程分开了。假如我当时多找几组数据来模拟说不定能找到这个错误,我也没敲个暴力来对拍(因为暴力太长了)。我得到的教训是:不能肯定自己算法的正确性是,不如敲个暴力对拍一下, 虽然可能花更长的时间,但总比没分好啊。T2 51nod 最大字典序

2017-08-02 21:32:25 458

原创 [HDU6035] TrickGCD

Problem LinkDescription    给定一个长度为nn的序列A1,A2,…,AnA_1,A_2,\dots,A_n,求满足1≤Bi≤Ai 1 \le B_i \le A_i 且 gcd(B1,B2,…,Bn)≥2gcd(B_1,B_2,\dots,B_n)\ge 2 的序列BB的个数,答案mod 1e9+7mod \ 1e9+7 。Solution    大家用的都是莫比乌斯反演,

2017-07-29 10:22:45 427

原创 2017/7/27 离线赛

T1 猴王大道东    70分的数据还是很暴力的O(n4)O(n^4),定义dp[i][j]dp[i][j]表示到点(i,j)(i,j)的方案数,我用的是刷表法,每次dpdp到(i,j)(i,j)时枚举它能到达的点,即xx从i+1i+1到nn,yy从j+1j+1到mm,空间复杂度只要O(n2)O(n^2);90分的话,我考虑了填表法,只要从之前的dpdp中抽出来需要的就行了,当dpdp到(i,j)(

2017-07-28 14:46:34 265

原创 2017/7/24 离线赛

T1 插队    很显然,题目的要求是对于第ii只猴子,从他开始从后好往前数找到第二个比他高的猴子,然后再+1。比赛时,我想,既然要求第二个,那我们就要先求第一个,于是我敲了一个二分+线段树的O(nlog2n)O(nlog^2n),求一次还行,但是求两次就爆了。比赛完,我看了别人的代码,发现可以用单调栈求比自己大的第一个数,只要O(n)O(n)就行了。vector<int>e[M];int n,t

2017-07-24 21:32:09 325

原创 2017/7/15 离线赛

第一题 NOIP2016普及组复赛T3 海港      题目很长,但是意思很明确。因为船到达的时间是递增的,所以直接按数据顺序模拟过来就好。我的做法是,按1~n的顺序枚举过来,把一艘艘船塞进队列,再把队列前面时间太早的船删去,即对于第ii艘船,我们先把队列里时间小于等于ti−86400t_i-86400的船删去,再把第ii艘船塞进队列。剩下的问题就是如何存储数据了,先看一下数据范围:1⩽n⩽1051

2017-07-17 10:23:28 325

原创 扩展欧几里得算法求乘法逆元

对于同余方程 ax ≡\equiv 1 (mod b),我们称x为a关于模b的乘法逆元,具体可见百度百科词条“乘法逆元”,那么如何求出最小的正整数x为a关于模b的乘法逆元呢?我们需要用到扩展欧几里得定理算法。由贝祖定理我们知道一定存在一组整数解x,y满足 ax+by=gcd(a,b)ax+by=\gcd(a,b),而用扩展欧几里得定理我们可以求出一组满足条件的特解。 ax+by=gcd(a,b)=

2016-11-17 19:49:57 3551

原创 OpenJudge 2986 拼点游戏

题意:有A,B两组牌各n张,每张牌有个点数,每次A,B各出一张牌,谁的点数大谁得到3块巧克力,另一个人得到1块巧克力,若点数相同,两人各得到2块巧克力。求B能获得的最多和最少巧克力数。刚看到这题的时候我就觉得这跟“田忌赛马”特别像,于是我们可以就着这个思路想下去。首先我们知道B得到最少的巧克力,也就是A得到最多巧克力时,B得到的巧克力数,因此问题可以转化为求一个人能获得的最多巧克力数。先将点数从小到

2016-11-16 21:40:55 1987

原创 汉诺塔——递归入门

题意:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:1:每次只能移动一个圆盘; 2:大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。 求将所有圆盘从A移到C的移动方案。看你有没有真正理解递归,这道题就够了。总共有三根杆子,目的是将n个圆盘通过B从A移到C。当n=

2016-11-15 18:44:46 608

原创 [NOIP2009]普及组T4 道路游戏

题意:在环形公路上,给定n个工厂制造机器人的花费以及n条道路每个时刻的金币数,一个时刻必须有也只能有一个机器人在公路上收集金币,求m时刻后能收集的最多金币。这题题意很明确,显然是dp,这里我们讲的是贪心的做法,另外还有单调队列的做法。我们要尽可能多地收集金币,就得考虑第i时刻买不买机器人。所以我们要分清什么情况下买机器人,什么情况下不买机器人。 先介绍一下代码中要用到的数组及变量。dp[i][j]

2016-11-15 16:15:02 1614

原创 [NOIP2015]Day1 T2 信息传递

题意:知道n个人以及他们信息传递的对象,每一轮传递一次自己知道的信息,问最少几轮使得某个人能听到自己的信息。 分析:果断按着样例画了一张有向图,如下: 样例输入 5 2 4 2 3 1样例输出 3这已经够明显了,很容易将题目转化为求有向图最小的环。因为只有形成了一个环,一个人的信息才有可能传递回自己,下面讲两种解法。一、拓扑排序。每次将入度为0的点放入队列,再一个个遍历,我们知道环上的点

2016-11-12 18:04:19 836

原创 求二分图最大匹配的两种算法

这里以TJOI2016的游戏为例Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂。简单的说,这个游戏就是在一张地图上放上若干个炸弹,看是否能炸到对手,或者躲开对手的炸弹。在玩游戏的过程中,小H想到了这样一个问题:当给定一张地图,在这张地图上最多能放上多少个炸弹能使得任意两个炸弹之间不会互相炸到。炸弹能炸到的范围是该炸弹所在的一行和一列,炸弹的威力可以穿透软石头,但是不能穿

2016-11-11 20:59:15 921

原创 [TJOI2016]游戏——二分图匹配

为了弄懂这道题,我参考了以下两位大神的博文,下面给出地址: ACdreamers的ZOJ1654(二分构图题典例); hackbuteer1的二分图的最大匹配; 建议没搞懂二分图匹配的同学可以去看看他们的文章,反正我看了之后受益匪浅。题意是给定一个n*m的地图,地图上有三种类型的方块:空地(*)、软石头(x)、硬石头(#),只有空地上能放炸弹,炸弹能炸到的范围是从炸弹位置处横竖方向上一直延伸到

2016-11-11 19:01:15 414 1

原创 是时候总结总结了

考了十几场离线赛了,也是时候总结总结了。 —–心态—– 记得刚做离线赛的时候很不习惯,因为这不像在线赛一样,你可以肯定自己的算法是对的,而离线赛呢,不到测评的时候,你根本不能确定自己对错(可能是说得太夸张了一点,水题还是能肯定的)。其实这样看来,我感觉离线赛更能锻炼一个人的能力。首先是心态的问题,记得当初我考的都不咋滴,也许是算法没有掌握,也许太紧张,但这都离不开心态。一道水题,你不能认为它真的

2016-11-10 16:28:44 446 3

原创 OpenJudge 6043 哆啦A梦的时光机——又短又快的双向广搜

题目链接 早上也写了一篇这道题关于双向广搜的题解,但那个写法有一个漏洞,而且很慢,在下面我将一一道来。我们知道,单向广搜时由起始点出发,引出4个分支,再由4个分支引出16个分支,可以看出这个增长速度是非常快的,而且随着搜索层数递增。于是加入双向广搜进行时间优化,双向广搜是由起点和终点两个点出发不断交替引出分支,当两者的分支发生碰撞时就可以得出答案了。重要的是”交替”两个字,不是指两边交替着一个一个

2016-11-10 15:54:58 989

原创 [NOIOJ19]装箱问题 贪心算法

题目在这儿这题思路很明了,无非是更多地利用空间,尽可能少地空出空位。 不妨设1*1、2*2、3*3、4*4、5*5、6*6的长方体数量分别为c1、c2、c3、c4、c5、c6c_1、c_2、c_3、c_4、c_5、c_6 记当前答案为ans,我们知道6*6、5*5、4*4*的长方体由于体积太大,一箱只能放一个,故ans至少是c4+c5+c6c_4+c_5+c_6。 当一个箱子放了一个6*6的长

2016-10-28 18:28:45 3275 4

原创 [HDU2433] Travel BFS+最短路生成树

[HDU2433] Travel

2016-10-25 20:50:09 799

原创 Codeforces #200 (Div.2) E. Read Time 解题报告

题目网址在这儿 题目大意 就是一堆指针在格子上水平移动,使得所以的红色区域都被经过,求所有指针移动距离中最大值的最小值。一开始看到这题,我是一脸懵逼的,刚开始想到的是dp和贪心,然后看到数据是[1,108][1,10^8],就想到先离散,想到dp就要定义状态了,但有这么多个点实在很难定义,那就只能贪心,于是思路油然而生。 二分+贪心想到一个指针无非是向左走和向右走,只是先后的问题。这里我们不妨

2016-10-24 20:08:53 452

原创 POJ3253[USACO 2006 November Gold]--Fence Repair

程序等于算法加数据结构——尼古拉斯·沃斯

2016-10-21 13:58:44 921

原创 [NOIP2015]提高组初赛答案及题解

[NOIP2015]提高组初赛答案及题解

2016-10-20 18:25:37 12014 3

原创 简单介绍矩阵乘法

矩阵乘法

2016-10-18 21:27:42 1954 1

原创 [POJ3070]Fibonacci sequence——矩阵+快速幂

斐波那契数列题目描述 斐波那契数列是由如下递推式定义的数列 F0=0F_0=0 F1=1F_1=1 Fn+1=Fn+1+FnF_{n+1}=F_{n+1}+F_n 求这个数列第n项的值对10410^4取余后的结果。

2016-10-18 10:37:49 1497 3

空空如也

空空如也

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

TA关注的人

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