自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 51nod一句话题解

update 2019.4.31294因为需要保证是正整数且严格递增,于是想到将原数-位数得到一串新的数列。发现只要保留新数列最长上升非负子序列,将其他进行改变即位最忧情况。n是1e5 采用nlogn的求LIS即可1419容易想到若为奇数 n∗n−1∗n−2n*n-1*n-2n∗n−1∗n−2这3个数gcd为1,且lcm最大若为偶数可知1.n∗n−1n*n-1n∗n−1 gcd肯定为1...

2019-04-03 18:20:55 250

原创 可持久化金清树训练记录

周练记录(每周必1练)2019.3.9 第三届福建省省赛 8/118/118/11(补到10/11) rank 2/1462/1462/1462019.3.16 The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple 6/136/136/13(补到10/13)...

2019-04-01 21:47:45 593 4

原创 2018总结

第一次总结自己的一年=。=2018算是正式进入acm(jb)的一年,从大一下的校赛,到后来的省赛、东北赛,最后到大二上icpc第一站(沈阳),以及最后突如其来的名额ccpc_final(深圳)。这一年走来是充实的,但同时也有很多遗憾,因此写下人生中第一篇总结,希望2019会更好!正文:2018年,当然要从2018年1月的寒假开始说起。2018年刚回到家,我就催着我妈买了一台属于自己...

2019-01-01 03:36:17 426 1

原创 HDU 5575 Discover Water Tank(线段树+自底向上dp+并查集)

题意给定n个挡板和m次回答,每次回答为x号水池的H+0.5高度是否有水,问这些回答互不矛盾的最大集合。题解设定状态dp[i][0-1]代表第i个区间枚举到当前回答后有水的最大不矛盾集合和没水的最大不矛盾集合。1代表有水,0代表没水。我们将回答的H从小到大排序后升序枚举,对于第i个回答,我们可以用线段树定位出其所影响的区间[l,r]在这个区间内去进行dp转移。同时我们还发现若枚举到了一定的高...

2019-11-01 11:28:28 247

原创 HDU 5558 后缀自动机

题意给定一个长度为n的小写字母串,让我们模拟以下过程对于查询位置i,在[0,i)范围内寻找一个T使得从T开始的字串与从i开始的字串相等且最长。找到输出len,T。i+=lenlen,T。i+=lenlen,T。i+=len没找到输出−1,str[i]的ASCII码,i+=1-1,str[i]的ASCII码,i+=1−1,str[i]的ASCII码,i+=1题解对于每次询问,我们都从根节...

2019-10-31 12:59:02 199

原创 gym 101620 L Lunar Landscape

题意给定两类正方形,一类正放一类斜45度放,题面给出n个正方形,求平面覆盖的面积题解对于正放的正方形直接二维差分求前缀和即可,对于第二类,可以旋转坐标系,利用x0=x−y,y0=x+yx_0=x-y,y_0=x+yx0​=x−y,y0​=x+y来表示,之后对于旋转后的坐标轴进行差分求前缀和,最后统计答案的时候,对于每个点首先判断其是否被第一类覆盖,覆盖则加1。之后判断其是否被第二类坐标系覆盖...

2019-10-31 12:51:19 377

原创 hdu 5936 Difference (折半枚举)

题意定义x=y各个位置上的数字的k次和-y本身先已知x和k,求存在几个这样的y题解考虑x的范围为1e9,因此y不超过1e10,因此考虑折半枚举前5位和后5位,统计答案。由于T有100组,因此可以预处理出9个数字的前5位的值,这样用map不会TLE,若每次都重新算一遍的话,map会TLE,使用vector+二分进行优化代码/** * author: TelmaZzzz...

2019-10-10 21:47:46 168

原创 gym 101194 B Hemi Palindrome

题意定义一个01串若其奇数位为回文或者其偶数位为回文则是个好串,问长度为n字典序第K小的好串是什么。题解比较套路的暴力找第k大问题,每次从高位枚举是0还是1,之后统计填0时候方案可行的方案数(使用容斥)若方案数<k说明该为是1则将k减去求的的然后,否则该位是0继续枚举。代码/** * author: TelmaZzzz * create: 201...

2019-10-10 21:43:09 322

原创 gym 101194 C Mr. Panda and Strips

题意找到一个连续区间和另一个连续区间,它两拼起来也要求每个数都互不相同,问拼起来后最大的长度是多长 (n<=1000)题解首先预处理出每位数字i左边第一个出现的位置和右边第一个出现的位置(用来快速确定互不相同的连续区间)之后枚举左区间的右端点,向左扩充连续区间将其中的位置丢入map,之后枚举右区间的左端点,向右扩充,边扩充边统计答案(即边扩充边缩放答案)...

2019-10-10 21:24:52 262

原创 HihoCoder 1879 J - Rikka with Triangles (计算几何)

题意给定2000个点,求所有锐角三角形的面积题解核心策略就是求出所有锐角的面积作为S1,再求出所有非锐角的面积作为S2,已知一个锐角三角形面积在S1中算了3次,非锐角三角形中的锐角在S1中算了2次,因此答案为(S1−2∗S2)/3(S1-2*S2)/3(S1−2∗S2)/3枚举每个点做极角排序,将环扩充成链,预处理出x,y轴的前缀和,之后双指针扫出角度相同、角度为锐角,角度小于180的指针...

2019-10-10 16:25:47 262

原创 gym 101194 F Mr. Panda and Fantastic Beasts(SAM+BFS)

题意给定n个字符串,从第一个字符串中找到一个字典序最小的字串使其只出现在第一个串中题解对于这n个串建立广义后缀自动机,并对第一个串的np节点打上标记0,对于其他串的np节点打上标记1,之后我们对于每个np节点更新其后缀链,使得整个DF...

2019-10-06 21:20:30 199

原创 gym 101194 J Mr.Panda and TubeMaster (费用流)

题意给定一张n*m的方格,每个方格放可以放4种类型的直角管道,并给出几个重要点,保证每个重要点都存在管道,且管道围成一个环。现给出每个管道连接两个方格能赚的钱,输出最多赚多少钱。若不存在方案输出impossible。题解可以发现每个方格都存在上下流向和左右流向的管道,且方格之间相互连接的管道方向是不同的,因此想到可以将方格黑白染色,白色代表该方格中的管道只左右流,黑色代表该方格中的管道只上下...

2019-10-06 21:11:21 294

原创 gym 101987 J Starwars(bfs)

题意给定一张1e3的有向图,每条路径都有一个编码 (编码范围为20),并给出一些人类点,和目的点,求是否存在从非人类点出发到目的点的路径编号序与人类店出发到目标点的路径编码序一样。存在输出YES,否则NO题解倒着去考虑,假若存在一条一样的路那么从后往前回溯路径发现两条路径的起点都为目标点,终点一个为人类点,一个为非人类点,之后我们考虑两个状态代表人类和非人类,他们的出发点都为目标点,之后他们...

2019-10-03 22:56:53 450

原创 gym 101987 B Cosmetic Survey

题意题意化简就是让你模拟出两两题面喜欢的人数之间的大小关系,连接单向边,然后定义了S(s,t)代表从s到t的所有路径中,最小边的最大值。并输出对于点x,满足其他所有点y使得S(x,y)>=S(y,x)并输出这些点 (n<=500)题解按题意模拟出建边后,对于该问题跑个Floryd,即可求出S数组,去转移式子S[x][y]=max(S[x][y],min(S[x][k],S[k][...

2019-10-03 22:48:29 302

原创 gym 102056 J Philosophical … Balance (SAM)

题意小B有一个串s,小A可以设定自己选取s后缀串的概率,使得小B拿出s串的后缀使得sas_asa​和sbs_bsb​的lcp的期望最小,问小A设置方案中最大可能期望是多少。题解首先将s的反串丢入SAM中,建立出后缀树,可以发现一个规律为两结点的lcp即位他们两的lca结点的len,因此可以将该问题想象成树的合并设val[i]代表i点为根的子树期望最小最大值是多少考虑一颗子树中如何找到答案...

2019-09-26 21:56:47 372

原创 gym 102056I Misunderstood … Missing (DP)

题意给定n天,每天的一开始攻击力A会提升D,接下来会有3种操作可以选择攻击并造成A+a[i]的伤害D+b[i]A+c[i]现A与D初始化值都是0,问第n天后最多能造成多大的伤害题解容易倒着去维护是比较好维护的(因为你可以记录一个状态代表攻击的累加天数去处理2操作)想到的dp状态是dp[i][j][k][p]代表第i天砍了j刀,用了k次c,攻击天数累加为p的最大伤害,可以发现这样空...

2019-09-26 21:37:06 249

原创 gym 102028 H The Problem to Make You Happy (有向图博弈)

题意给定一张有向图,以及A B的起始点,满足规则若在一个时刻A与B在同一个位置,则B输,轮到了当无路可走则输,若无限循环则B赢。B先手题解维护B的必败点,定义状态,vis[u][v][0/1]代表B在u,A在v,0代表该轮轮到B,1代表该轮轮到A。可知初始状态vis[i][i][0&1]和vis[u][1~n][0](if outdeg[u]==0) 这些点为必败点。考虑从已知点扩...

2019-09-22 00:19:19 347

原创 gym 102028 C The Problem Needs 3D Arrays

题意:给定n个互不相同的数,从中选取一个子序列使得子序列中逆序对的个数/子序列长度最大。题解:由于n的范围为100,可以往网络流方向思考,发现若将逆序对都连边,问题所求就变成图中子图边数/子图点数的最大值。而这类问题便可以想到最大密度子图问题,ans=∑E′∈E1⋅Xe∑V′∈V1⋅Xvans=\frac{ \sum_{E' \in E}{1 \cdot X_e} }{\sum_{V' \...

2019-09-22 00:05:26 230

原创 gym101612 G Grand Test (dfs)

题意给定一张无向图,求是否能在图中找到一对点,使得其有3条不重复(中间途径的点不相同)的简单路,并输出方案题解首先对图创建成一颗dfs树。枚举图中不是树边的边,(其树边上对应的路径必定是一条链),将该链以及该边染色,若发现一条边重复染色则记录下这两种染色,退出枚举重新跑一遍这两种染色方案,可以在图中得到两个简单环,之后找到两个简单环中的任意三度结点作为起点和终点,暴力求简单边即可(由于...

2019-09-08 01:01:30 270

原创 gym 101612H Hidden Supervisors (NEERC 2017 St Petersburg) (贪心)

题意给定一个森林,要求将森林连成树,使得合成的树中端点互不相同的边的数量最大,输出连边方案题解自叶子向上贪心可以求出一棵树的最优情况,同时保证了根部不连与根部连的最优情况即为上述贪心所求的情况。通过1便可将问题转化为已知多个可匹配或不可匹配的点,将他们连成树,每次连边都会给大树带来k个可匹配的点。(id为1的树固定)上述贪心容易想到首先肯定是将不可匹配点先连到大树(为了使得大树中可匹配...

2019-09-06 23:34:26 186

原创 SEERC 2017 B Bricks(dp)

题意在一个长为n的空队列中,m次操作间一块砖扔到posipos_iposi​的位置当posipos_iposi​已经有砖则砖落到任意两侧的空位,不得超过头尾。问m次操作后队列有几种可能的形状题解设dp[i]dp[i]dp[i]代表第i处不放砖,前面放满了iii前面操作的所有砖头,num[i]num[i]num[i]代表空位为i的方案数。明显的看出num[0]=1,我们发现m次操作的顺序与结...

2019-09-02 12:07:34 495

原创 2017 NEERC J Journey from Petersburg to Moscow (最短路)

题意给定n=103,m=103n=10^3,m=10^3n=103,m=103的图,路径前k大边的和为该路径的代价,问其中所有从1−n1-n1−n的路径中代价的最小值是都少。题解假如所求的最短代价路径的边数小于等于k,那么答案肯定是原图最短路假如所求的最短代价路径的边数大于k,那么我们发现其计算的方式是将不在前k大路径的代价置为0去计算。考虑这一问题,我们只要枚举所有边,假设该边为所求最...

2019-08-31 21:06:36 270

原创 SEERC 2017 L Divide and Conquer(树上差分)

题意给定贡献节点的两棵树,问最少割几条边导致存在一对点在这两颗树上都不在同一联通块内。并同时求出方案数题解容易发现最小割边数不会超过3个证明:一棵树产生2⋅(n−1)2 \cdot (n-1)2⋅(n−1)个度,因此该图存在4⋅(n−1)4 \cdot (n-1)4⋅(n−1)个度因此容易看出最小度的结点度数不会超过4,因此最差我们只要取最小度的结点将其度全部割掉必满足题意,证毕容易观...

2019-08-30 21:08:21 281

原创 2018HDU多校补题 HDU 6331(dp)

题意:给定nnn为505050的有向图,给出1e61e61e6的问题,问从sss到ttt至少走kkk步的最短路题解:定义dp[st][i][j]dp[st][i][j]dp[st][i][j]表示恰好走st步从i到j的最短路。那么我们输入的值则是dp[1][u][v]dp[1][u][v]dp[1][u][v]之后就可以想到一个很容易想到的转移 类似于flord算法 dp[st][i][...

2019-07-11 23:58:57 189

原创 2018HDU多校补题 HDU 6386 (双端队列+虚点)

题意:给定一张图以及每条路的类型,问从1到n至少需要换几次路可以走到。图的大小是n=1e5n=1e5n=1e5,m=2e5m=2e5m=2e5题解:首先想到这道题的最暴力的做法即,把每条边看出一个点,对于相邻的两条边连边,若这两条边类型相同则边权为000,否则边权为111。但是这样的化图的大小就是m2m^2m2级别的了,所以想到建立虚点,第一种虚点即结点,建立&lt;n,m+n,1&...

2019-07-11 23:36:15 191

原创 codeforces gym 101341 A Streets of Working Lanterns - 2(贪心+线段树)

题解:大致题意为,给定n个括号组合,问能不能将这n个括号组合排序后最后变成一串合法的括号组合括号匹配题第一反应是栈,第二反应是左括号为1,右括号为-1,前缀和。通过第二种思想我们可以将输入的nnn个括号组合转变成为了接上该组合,前缀至少需要lll个左括号,后缀可加rrr个左括号。之后我们将这nnn个组合以lll值,小到大排序,并以该序列建立区间rrr值最大的线段树最后一步就是我们贪心取的...

2019-05-04 21:57:20 410

原创 codeforces gym 101341 I Matrix God

题解:大致题意为给定n∗nn*nn∗n的矩阵A,B,C,判断矩阵C是否为A∗BA*BA∗B。n的范围是1e3。显然无法用n3n^3n3的矩阵乘法暴力求解实现。因此我们想到如何降低维度,发现矩阵乘法的复杂度与矩阵的形状有关,如果是一个1∗n1*n1∗n的矩阵乘,那么结果就是n2n^2n2的解出。于是想到能不能将等式左边同时乘上1∗n1*n1∗n的D矩阵,即D∗A∗BD*A*BD∗A∗B=D∗C...

2019-05-04 21:42:38 161

原创 codeforces 793D Presents in Bankopolis

题解:大致题意为给定n最大为80的直线点阵,并给出m条单向路,且这m条路能走的条件是,路经过的点没有被访问过,问走完K个点的最小代价。起点任意,终点任意由于n很小,第一反应是往费用流想,后来发现无法建图(可能是我太菜了) 之后考虑到是条直线,于是往区间dp的思路去想发现这个转移很好想到dp[now][l][r][k]表示当前在now这个点,只能在(l,r)中找点,需要访问K-k个点的最小代价...

2019-04-30 01:22:07 293

原创 codeforces 507E Breaking Good

题解:题意大致为给定1e5的无向图,在m条边中有点边是好的有的是坏的,若要用坏的就要修,多余的好的要炸。问从1到n的最短路中修和炸的次数最少是几次首先大致框架就是一个bfs,之后我们可以利用类似求最短路松弛的原理,对每个点求最短路到此点需要修路的最小值(因为我们发现路只有两种情况,因此只要保证修的路越少,则用之前能用的路就会越多,炸的也就越少,这样总和才最少)这样回溯把路径打上标记,最后比较原...

2019-04-30 01:13:39 275

原创 codeforces59E Shortest Path (bfs)

题解:大致题意为给定3e3的无向图,已经给定1e5组非法行走路线(ai,bi,ci),问最少走几条路从1走到n,并输出路线由于点只有3e3,所以可以记录前驱是pre,当前是x为小节点,是否跑过,来跑一遍bfs 这样就不会出现队列元素过多的情况出现。代码:#include <map>#include <set>#include <ctime>#inc...

2019-04-30 01:04:54 269

原创 codeforces 715 B Complete The Graph(二分+最短路)

题解:题意大致为给定1e31e31e3的无向图,且给定起点sss和终点ttt,以及部分知道长度的边,让你补全不知道长度的边使得从sss到ttt的最短路为LLL解题可以分为3个步骤不将不知道长度的边跳过,求最短路,若最短路小于L则一定不可能成功输出NO,若等于则将未知边长设定为INF若大于则执行2将所有未知边都设成1,跑最短路,若最短路大于L则一定不能成功(因为题意规定边长最小为1)输出N...

2019-04-30 00:58:30 207

原创 codeforces gym 101196H Vin Diagrams (dfs)

题解:大致题意是给定两个封闭图形,求其各自拥有的.个数以及共同拥有的.个数第一步 我们可以通过dfsdfsdfs描出AB两个封闭图形的边,唯一要注意的一点就是当遇到十字路口时,按上一步的方向走即可第二步我们可以不能发现从上往下、从左到右第一个AAA或BBB的边的位置的右下角必定为AAA或BBB的内部,所以我们只要以这个点为起点对AAA图中的.打上111标记,BBB图中的.打上222标记 (d...

2019-04-24 01:09:59 297

原创 ZOJ-4097 Rescue the Princess (e-DCC缩边+LCA)

题解题意是给定一个1e51e51e5的无向图(可自环可重边且联通度不为1),1e51e51e5次询问问是否存在两条没有公共边的路使得vvv到uuu,www到uuu成立第一容易想到的点是边缩。边缩后满足同一节点中的222个点必定有222条路可达到之后通过这性质可以发现假如uuu与v、wv、wv、w任意一个在同一节点答案必定是YesYesYes对于其他情况,我们又可以发现当求出这333个点相...

2019-04-16 00:42:21 180

原创 codefoces 558C Amr and Chemistry (bfs)

题解:题意为给定n个数,允许有2种操作,一种是乘2 一种是除2(向下取整) 问最小需要几次操作使得n个数相等首先发现一个显然的性质 答案不可能超过2e52e52e5,然后我们发现对于这类题目多会用bfsbfsbfs来解决,由于值的范围确定,我们就可以想到再记录num[i]num[i]num[i]表示nnn个数中能到达数字iii的个数,ans[i]ans[i]ans[i]则表示到达数字i的最小...

2019-04-12 00:42:02 168

原创 codefoces 449B Jzzhu and Cities(最短路)

题解:题目给出m条双向边,k条从节点1出发的有向边,问在不影响最短路的情况下,这k条从1出发的边最多能去掉几个。其实转换过来的意思就是在图中跑最短路找关键路径。其做法就是在每次松弛的时候判断边是否为k条边中的一条,若是则把这个结点打上true标记,若不是则打上false标记。代码:#include <map>#include <set>#include <...

2019-04-12 00:35:00 155

原创 geometry一轮刷题小结

写在前面一直想学计算几何由于找不到好的题集于是只能在cf上从1800难度递增往上“无脑”刷,刷这刷这感觉cf上的计算几何题确实挺好的。于是在刷到2100的时候实在刷不动了,开始写写小结。坑点1.1.1.精度尽量控制在1e-9,除了出现数据1e9出现相乘或想除或者sqrt可以考虑提高精度到1e-152.2.2.整数情况下的除法能用gcd+pair就不要轻易去除3.3.3.碰到一个物体动另一...

2019-04-11 00:41:33 231 1

原创 BZOJ 1426收集邮票(期望dp)

题解:这题确立两个状态 这两个状态都很好想 一个是dp[i]表示已经有i张邮票还需天数的期望,显然dp[n]=0第二个状态即g[i]表示已经有i张邮票还要花多少钱,显然g[n]=0然后转移也很好想对于第一状态会有2种情况 一种是买到了没有的邮票 一种是买到了有的邮票相应动转移dp[i]=dp[i+1]∗(n−i)/n+dp[i]∗i/n+1dp[i]=dp[i+1]*(n-i)/n+dp...

2019-04-11 00:16:19 170

原创 bzoj3450(期望dp)

题解:这题与OSU!那题类似。设立1.最后连续o的 分数计算规则是a2.答案 这两种状态即可具体看代码即可知代码:#include <map>#include <set>#include <ctime>#include <cmath>#include <queue>#include <stack>#in...

2019-04-11 00:06:14 213

原创 ZOJ3640(期望dp)

题解:期望dp重要是转移状态的确定,而一般来说转移状态一般会用一个有范围的状态去限定,这题有限的状态量可以想到的是Cain的攻击力,(不超过2e4)于是可以确定以下状态 dp[i]dp[i]dp[i]表示在当前攻击为i时所需要的天数期望于是可以自然想到转移如果i值大于c[i]则dp[i]+=t[i]/ndp[i]+=t[i]/ndp[i]+=t[i]/n否则 dp[i]+=(dp[i+...

2019-04-11 00:02:28 214

原创 BZOJ4318:OSU!(概率dp)

题解:这种x3x^3x3的题很容易想到用x2x^2x2,x1x^1x1这两个状态来转移过来。因为我们发现(x+1)3(x+1)^3(x+1)3拆开可以用这三个东西来表示。于是定义状态dp[i][3]dp[i][3]dp[i][3]第二维的1表示长链尾部连续1的x1x^1x12表示长链尾部连续1的x2x^2x23表示答案详细转移见代码 核心思想就是三次方和平方的分解代码:#incl...

2019-04-10 00:36:12 209

空空如也

空空如也

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

TA关注的人

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