自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

辣鸡葫芦娃

在巨人的脚趾上往肩膀那边爬

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

原创 ACM之坑&套路

写在前边:这些梗都是敝人自己做题和比赛时曾经坑过自己的地方,特别在这里记录一下,所有的链接都是本博客中的题解链接(有大致题意说明和代码),原题请到OJ上自行寻找。目的是提升自身姿势。欢迎大佬们给我提出更好的建议,十分感谢。#1:一些写法的线段树需要开四倍空间。大概是因为:在很靠近叶子的地方,他的编号就很接近2倍了。然后他的孩子(超生)就接近4倍了。 例如:Codeforces 833B...

2017-08-02 14:14:23 3375 3

原创 CodeForces 824D Round#430 Div2D:Vitya and Strange Lesson :01字典树

题意:给出n(题解:首先,第一次要求把所有数字抑或x1,第二次要求吧所有数字继续抑或x2,就等价于把原数列抑或一个x1^x2,于是原数列不需要做改变,每次做查询就可以了。考虑mex的二进制位,mex是*最小*的*抑或之后*没出现过的数字(从高位开始决定,如果高位可以为0就确定为0,否则确定为1,那么我们吧mex还原回去就是mex^x,mex^x这个数字原序列中不存在。那么也就是mex^x从

2017-08-30 17:36:27 269

原创 POJ2104:划分树求区间第k小

题意:给出n个数字(n题解:POJ数据水是出了名的。这个题甚至可以对每次询问把元素拷贝出来排个序搞定。。但是我拿这个题搞了搞划分树模板。划分树是一个二叉树,每个节点保存一段区间。build每次把一个区间[ L , R ]划分成两个区间[ L, Mid ]和[ Mid+1 , R ](让一些数字进入左子区间,剩下的进入右子区间)使得 左子区间的每个数字 都不大于 右子区间的每个数字。同时数字

2017-08-29 00:28:49 380

原创 不知道怎么称呼的题目:树形DP计数

题意:给出1棵树(n题解:首先,染色规则其实说明了一件事情:相同颜色的点是一个块。那么我们只需要求出这棵树用1/2/3/……/k种颜色染色的方案数,然后分别乘上A(k,1)/A(k,2)/A(k,3)/……/A(k,k)就行了。那么比较明显这就是一个树形DP了。用dp[ node ][ kk ]表示node以及node以下的点,用kk种颜色染色的方案数,其中有:父节点的颜色号不小于子节点的颜色

2017-08-27 23:18:51 412

原创 Codeforces 843B AIM Tech Round 4 (Div. 2) D:随机拼脸(注意rand()的范围)

这道题启示我们。。有时候交互题也是可以做的。。。有时候真的不是你脸太黑的问题。。要对自己的脸有自信题意:给出一个singly linked list,就是单向链表,size最多5W,是那种每个节点只知道自己的值以及下一个节点指针的链表。这个list已经升序排序好了,输入数字个数n,链表首地址st,以及询问x,要求你找到lower_bound(x)的值,就是第一个不小于x的值。链表对

2017-08-25 06:26:57 786

原创 POJ2144 轮廓线DP

题意:只用1X2和2X1两种形状的方块填充满MXN这么大的棋盘,求方案数,会有很多组询问(M,N题解:用轮廓线DP,用一个至多11个位的数字表示轮廓状态压缩成一维。并且对于每个棋盘上的点,都有完整的这么多状态。考虑每一行开头那个点,需要用到上一行结束那个点的轮廓状态来转移自己的轮廓状态。而每一行后边的点,都是用他左边这个点的轮廓状态来转移自己。因此显然可以滚动数组。而且用滚动数组处理起来更方便

2017-08-24 00:59:42 446

原创 Dijkstra 板子(效率对比)

测试题目:luogu 1462:二分+Dijkstra保证了尽可能除了Dijkstra的存图方式不同,其他部分完全相同。比较结果:vector链表比模拟链表慢大约1/4板子1号:手动模拟链表版 最慢测试点:420ms 总时间:1984ms#includeusing namespace std;const int MAX = 1e5;int first[MAX];in

2017-08-23 17:34:48 755

原创 HDU 6166 2017多校 Team09 1006:Dijkstra顶点子集最短路径

宕掉了好几天。。。。。来发一个水题的题解题意:给出一个有向图(n,m题解:回想最短路算法,首先排除掉N^3的的那个,然后剩下SPFA和Dijkstra跑多次的复杂度比较能接受,这两个其实是差不多的东西,由于边权都是正的,就上Dijkstra吧。基础版的Dijkstra是单源多汇的,但是本题是多源多汇,但是Dij他是单源的……等等。。。Dij也可以多源呀,只要开一个超源0,用长度为0

2017-08-22 21:03:46 2314

原创 HDU 6138 2017多校第八场1006 Fleet of the Eternal Throne :AC自动机

题意:给出n(题解:对n个串造出 自动AC机 ,这里的AC机不需要维护单词的结束点  需要维护一个每个节点到根的距离,也就是前缀的长度。然后用x跑一遍AC机,在所有匹配成功的结束节点上记上一个标记(直接记成询问次数就行了:第一次询问flag记成1,第二次记成2,这样保证每次的flag都不一样就不用清空标记了),然后这些标记点的意思就是:这个前缀是n个串中某个的前缀,且这个前缀是串x的字串。然后

2017-08-17 18:39:08 1676 1

原创 Luogu 1169 棋盘制作:计数问题

题意:给出一个矩形的棋盘,每个点非0即1,代表黑色和白色。国际象棋的棋盘是黑白交错的。分别求出面积最大的正方形和矩形合法棋盘。题解:首先看正方形可以很轻松的N*M的DP给搞定。再来看矩形,一个极大的矩形必然四个边界都是极大的,也就是说四个边界如果某一个继续拓展1,必然不合法。那么我们可以通过枚举下边界,然后预处理出每个点向上最多延伸的高度,这样我们只需要求出在这一行上,左右两边最近的那个比这个

2017-08-12 13:59:48 392

原创 HDU 6096:妙用AC自动机(666)

题意:给出一个n(题解:官方题解的意思是:弄两个Trie树,然后正串的Trie树得到他下边所有终止节点。然后反串的Trie树上就每一个点都开线段树统计答案。而且必须是动态开点线段树,要不然内存炸的很恐怖。某位大佬讲给我的题解(666!666!666!):首先必须离线处理。先看询问:给出 s 和 t 那么我们把他组合成  t#s  ,也就是表示成 (后缀)(特殊字符)(前缀)的形

2017-08-11 18:01:58 807

原创 HDU 2222 ACAM模板(AC自动机)

这里找到了两篇很nice的Trie树(作者Hackbuteer1)以及AC自动机(作者niushuai666)入门详解。博主写的可以说是非常用心了,一看就懂。题意:给出N(题解:AC自动机裸题。所谓AC自动机就是Trie树加上了KMP的fail指针,而且是多模式的fail指针,意思就是说Trie图是有相同前缀的两个单词会有相同的一段root出发的路径,这个fail指针不再是KMP里某一

2017-08-10 00:33:51 295

原创 luogu 3907 :Trie 树板子(dalao勿看,水的辣眼睛)

题意:给出N(题解:对N个串造一个Trie树,然后拿着T在树上跑,如果T串失败了,那么直接退出。T匹配到了某个Node,然后从这个Node开始DFS就可以了。Code:#includeusing namespace std;const int MAX = 1000;char buff[MAX],delta[MAX];struct Trie_Node{ Trie_N

2017-08-09 20:21:38 1062

原创 HDU 6085 Multi-University Training Contest - Team 5 1001:压位大法好

写在前边:这里所谓的压位,就是把状态只有0/1两种的值,干脆都不用bool表示了,直接表示成二进制位,这样一个LL可以表示多达64个数据,而一个时钟周期内,LL可以直接处理掉64个数据,而不用像之前的bool运算需要进行64次=64个时钟周期,因此可以把常数变成64分之一,可以优雅地进行暴力。题意:给出长度为 n 的序列 A ,长度为 m 的序列 B ,保证A中任何两个数字不相同,B也是。

2017-08-09 15:38:34 282

原创 Codeforces 838E IndiaHacks 2nd Elimination 2017 mirror Convex Countour :毛线DP啊

题意:顺时针给出一个严格凸包的n个点坐标。求最长的一条不交叉的哈密顿回路。题解:每个哈密顿回路都有两个端点,其中一个作为起点,一个作为终点,就像一根毛线………………在这跟毛线没有结束的时候,他的终点是一个线头,那我们就拿这个线头来DP。dp[ i ][ k ]表是 连接i以及顺时针相邻 总共k个点的最短哈密顿路径。但是这个状态可以顺时针和逆时针拓展,所以考虑把二维变成三维dp[ i ][ k

2017-08-07 22:45:03 569

原创 HDU 6073 Multi-University Training Contest - Team 4 1007 :Matching In Multiplication:拓扑排序+思维

题意:给出一个二部图,U、V分别是二部图的两个点集,其中,U中每个点会有两条边连到V中两个不同的点。完美匹配定义为:所有点都成功匹配。完美匹配的权值定义为:匹配的边集所有边长度的乘积。图的权值定义为:所有不同方案的完美匹配的权值的和。给出的图满足一定存在完美匹配。题解:这个题开始拿到不知道如何入手,只知道U中每个点出度都是2,并且U、V都有n个点,那么很显然V、U都有2n的度。考虑匹配:U中每

2017-08-07 18:52:58 274

原创 Codeforces 835F Round #427 Div2F :树形DP

本题同NOI2013快餐店。题意:给出一张无向图,其中有n个点,n条边,(n题解:首先这个图是一个带环外向树的图。就是一个环,然后以某些环上的点为根可以延伸出一棵树。那么生成树的个数等于环上的边数,题目意思就是快速的求出这些生成树的直径。那么先考虑如果某个生成树的直径在外向树上面,那么可以很容易的DP求出外向树直径。因为外向树上面的边是不能够删除的,因此外向树完整的被包括在任何一个生成

2017-08-06 17:54:44 552

原创 Codeforces 835D Round #427 Div2D :回文串DP

题意:定义1阶回文串:从左到右读等于从右到左读。k(k>=2)阶回文串为:本身是1阶回文串,且左半边和右半边都是k-1阶回文串。左半边:[ l , l+(r-l+1)/2-1 ];右半边:[ r-(r-l+1)/2+1 , r ]。求阶数为 1 到 len 的回文字串的个数。题解:子问题!子问题!子问题!k阶回文串的第一个定义:自身是回文串,这个等价于s[ l+1 ][ r-1 ]是一个回文串

2017-08-06 12:55:29 306

原创 Codeforces 837E Vasya's Function:数论入门初步

题意:定义F(a,0) = 0,F(a,b) = 1 + F(a,b - GCD(a,b)。给定 x 和 y (题解:a=A*GCD(a,b) b=B*GCD(a,b),那么b-GCD(a,b) = (B-1)*GCD(a,b),如果此时A和B-1依然互质,那么GCD不变下一次还是要执行b-GCD(a,b)。那么GCD什么时候才会变化呢?就是说找到一个最小的S,使得(B-S)%T=0其中T是a

2017-08-04 01:42:35 1593

原创 Codeforces 837D Round Subset :随便来个DP

弱智题。。。辣眼睛。。不要看。。。orz题意:给出n(题解:显然可以把数字分成2^x和5^y剩下的部分都没有用。对于每个数字记下x和y。考虑一个数字最大是10^18,最小的因子是2,所以x最大值是18/lg2 Code:#include #include #include using namespace std;int n, m, s;int f[10050][250

2017-08-04 01:25:51 941

原创 HDU 6078 2017 Multi-University Training Contest - Team 4 1012 Wavel Sequence:线段树+DP

写在前边:如果大佬发现了我姿势有问题,请帮我提出建议,十分感谢。题意:给出一个有n(x3=1)使得每个a_fi = b_gi,同时满足a_f1,a_f2,a_f3……a_fk为波浪序列。求不同的fg映射有多少种选取方式。题解:稍微翻译一下题意:a,b中分别从前向后选取k个数字。然后相对应的 a 中选择的每个位置的数字要和 b 中选择的对应位次的数字相同。(当然如果a数组出现过x,而b没

2017-08-03 18:31:52 1899

原创 HDU 6058 2017 Multi-University Training Contest - Team 3 1003 :Kanade's sum:简单计数问题

题意:给定一个n(题解:又是一道计数题,那么这个题一个比较好的思路是:枚举全排列中的每一个 a[ i ],让他作为value的答案,求出这样的序列有num个,那么a[ i ] 贡献的答案就是a[ i ] * num。num的求法可以分类讨论:让左边有x个比a[ i ]大的数字,右边有k-1-x个。那么我们需要枚举每一个a[ i ]这就有了n的复杂度。那么我们必须对于给定的a[ i ],快速地求

2017-08-02 14:01:38 548

空空如也

空空如也

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

TA关注的人

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