自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 [折半搜索][哈希]POJ1186方程的解数

题目传送门这道题明显N数据范围非常小,但是M很大,所以用折半搜索实现搜索算法的指数级优化,将复杂度优化到O(M^(N/2))。将搜出的两半结果用哈希的方式合并(乘法原理)。Code:#include <cstdio>#include <algorithm>#define Kss 10000000using namespace std...

2018-06-11 18:15:00 58

转载 [二进制trie][贪心]CSUOJ1216异或最大值

题目传送门过了好久,终于重新开始写博客了。。。这是一道二进制trie树的模板题。二进制trie树,理解一下就是一颗二叉树,左右儿子为0或1。然后每插入一个数就进行一次Find操作。Find:对于一个数x,我们在trie上总是走x在二进制下第i位的相反的那个节点。(当存在此节点时)Code:#include <cstdio>#include ...

2018-06-09 14:38:00 113

转载 Codeforces VK Cup 2018 Div.2

总题面传送门这次考试只过了3题,前三题题目难度并不大,但是第三题的代码细节卡了我两个半小时(基本上整场考试),所以以后要合理把握时间,注意把握代码细节,并更加完善我的代码风格,使其更加简练。(赛外话)。A:较简单的模拟题,但是注意对于刚开始的航班不需要S*2。B:贪心题。显然我们一定会先将Si值最大的堵住,然后是次大的...所以只要Sort一遍从大到小将不是水管1的堵住判断一...

2018-04-30 00:17:00 69

转载 ZJOI2018 round^2 游记

Day0一早起来6点左右,吃完早饭去班里拿了书包就来机房,说实话怕被打[手动滑稽]。在车上大约经历了3个半小时的车程,终于到达了目的地:余姚。当然基本上大家的设备电量都不多了,除了某些上车睡觉的大佬。在车上吃了好多东西,such as瓜子之类的东西当然没少吃。下车时出现重大失误!身份证落在车上了。下午到宾馆后我们开了个会,说明了省选期间的纪律问题,当然还是膜AntiQ...

2018-04-24 19:55:00 73

转载 UOJ UR#9 App管理器

题目传送门题目大意大概就是给你一个混合图(既有有向边又有无向边),对于每条无向边,u-v,问删去u->v,或删去v->u那条可以使新图强连通。(保证数据有解)。这道题前几个数据点送分。枚举每一条边,先将它去掉,遍历图,如果可以达到所有点,即强连通。比如去掉u->v,其实只要dfs(u),判断是否能到达v即可。可以直接删去,否则删另一条边,删去后因为图强连...

2018-04-15 18:35:00 149

转载 ~ManancherQwQ

例题传送门好久没写博客了,写一发。之前学的Manacher算法拿到模板题找到那最后一个点的错误了,TMD没开long long。Manachar算法主要是处理字符串中关于回文串的问题的,它可以在 O(n)的时间处理出以字符串中每一个字符为中心的回文串半径,由于将原字符串处理成两倍长度的新串,在每两个字符之间加入一个特定的特殊字符,因此原本长度为偶数的回文串就成了...

2018-04-14 19:07:00 48

转载 BZOJ1190_梦幻岛宝珠_KEY

题目传送门观察数据a*2^b,转化成二进制后,后面跟了b位的0,可以转化为一个分层背包。先预处理出每个物品是哪一层的,并放在同层内DP。同层内直接背包,考虑层与层之间的DP。第一维枚举层数,然后做类似于背包的DP,细节看code。code:/************************************************************...

2018-04-14 15:48:00 50

转载 BZOJ4145_The Prices_KEY

题目传送门看到M<=16经典状态压缩的数据范围,考虑题目。一道类似于背包的题目。设f[i][j]表示前i个商店,物品购买状态为j。先将f[i][j]加上w[i](到i的路费),转移一次,在与同状态的前一商店取min就好了。code:#include <cstdio>#include <cstring>#include &l...

2018-04-04 10:19:00 43

转载 BZOJ2120_数颜色_KEY

题目传送门裸的带修莫队。在Sort时如果左右区间都在同一块中,就按询问的修改的先后Sort。对于每次查询判断向前或向后修改。当size为N*2/3时据说是最优。O(N^(3/5))。code:/**************************************************************Problem: 2120...

2018-04-03 19:45:00 45

转载 打开CDQ的大门&BZOJ3262

题目传送门第一次接触CDQ分治,感谢YZ大佬的教导。CDQ分治就是一种奇特的分治方法,它用左区间的区间信息来更新右区间。设CDQ(L,R,l,r)表示递归到区间[L,R],区间的值为[l,r]。mid=l+r/2。将L~R区间按<=mid和>mid的两块重新分开。继续递归区间分治。CDQ分治用于解决一类偏序问题,题目中所求的为三维偏序。即计算一...

2018-04-03 16:07:00 44

转载 BZOJ1026_windy数_KEY

题目传送门数位DP,其实只要求1~A-1和1~B就可以了。两数相减即为答案。考虑怎们求1~A。设f[i][j]表示到第i位,为j的windy数总数。由前一位差值大于1的方程转移。但是统计答案要分类讨论。首先设所求数的位数为len。1~len-1首先加入答案。第len位的数-1也可以直接统计入答案。统计每一位时,枚举当前位为j(<a[i]),与上一...

2018-04-02 14:17:00 50

转载 BZOJ1084_最大子矩阵_KEY

题目传送门DP。但要分类讨论,对于M=1和M=2的情况分别讨论。1>M=1  设f[i][j]表示选了i个矩阵,到第j位。N^3转移。(前缀和)2>M=2  设f[i][j][k]表示选了i个矩阵,第一列到i,第二列到j。  枚举i,j,k后枚举j1和k1表示选一行的情况。  如果j==k则可以从之前的两行一起转移。code:/**...

2018-04-02 13:52:00 73

转载 BZOJ1068_压缩_KEY

题目传送门区间DP,设f[i][j][0/1]为i~j区间的压缩情况,1表示在插入了一个M。code:/**************************************************************Problem: 1068User: yekeheLanguage: C++Result: Acc...

2018-03-30 10:14:00 46

转载 BZOJ2428_均分数据_KEY

题目传送门这道题可以用C++的random_shuffle屮过去。random数列插入顺序,每次都插入数值和最小的那一组。#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;...

2018-03-29 15:57:00 38

转载 BZOJ1787_紧急集合_KEY

题目传送门LCA,对于每一个(x,y,z),两两求LCA得最优解或求出LCA不同于其他两组的那个为最优解。code:/**************************************************************Problem: 1787User: yekeheLanguage: C++Resu...

2018-03-22 20:26:00 41

转载 BZOJ054_移动玩具_KEY

题目传送门这道题我写IDA*写挂了,TLE+WA,只AC了两个点。这道题标算BFS+状态压缩。code:/************************************************************** Problem: 1054 User: yekehe Language: C++ Result: ...

2018-03-20 11:01:00 53

转载 BZOJ4034_树上操作_KEY

题目传送门这道题可以树链剖分+线段树。其他操作模板,第二个操作只需要将x~x+size[x]-1区间加值即可。code:#include <cstdio>#include <cstring>using namespace std;int read(){ char c;while(c=getchar(),(c<'0...

2018-03-20 07:33:00 52

转载 树链剖分学习&BZOJ1036

题目传送门树链剖分,计算机术语,指一种对树进行划分的算法,它先通过轻重边剖分将树分为多条链,保证每个点属于且只属于一条链,然后再通过数据结构(树状数组、SBT、SPLAY、线段树等)来维护每一条链。以下是几种概念:常见的路径剖分的方法是轻重树链剖分(启发式剖分)将树中的边分为:轻边和重边 ž定义size(X)为以X为根的子树的节点个数。 ž令V为U的儿子节点中...

2018-03-19 18:23:00 50

转载 BZOJ1208_宠物收养所_KEY

题目传送门平衡树的题。因为题目给出条件(其实自己也知道):同一时间呆在收养所中的,要么全是宠物,要么全是领养者,这些宠物和领养者的个数不会超过10000个。所以只要维护一颗平衡树,它的里面要不全是人,要不全是宠物。找到人的前驱后继比较。code:/*********************************************************...

2018-03-17 20:25:00 70

转载 莫队算法&BZOJ2038

题目传送门今天看了分块,顺便把基本的莫队学习了一下。莫队算法是一种离线算法,复杂度可以达到O((M+N)*Sqrt(N));对于询问区间的左端点分块,块内的右端点从小到大排列。对区间进行偏移操作。掌握一个思想基础:两个询问之间的状态跳转。如图,当前完成的询问的区间为[a,b],下一个询问的区间为[p,q],现在保存[a,b]区间内的每个颜色出现次数的sum[]数组...

2018-03-16 15:21:00 46

转载 BZOJ2039_employ人员雇佣_KEY

题目传送门网络流,求最小割。设tot为所有盈利的和,即所有人(不花钱)雇佣。对于S->i建一条容量为c[i]的边,i->j建一条S[i][j]*2的边,之所以这样建是因为如果不选这个人还会亏S[i][j]。对于i->T建一条容量为∑S[i][j]的边。最小割=最大流,跑Diniccode:/************************...

2018-03-16 15:03:00 48

转载 分块算法&BZOJ2002

题目传送门第一次接触分块......分块查找是折半查找和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。分块修改理论复杂度为O(N/M),M为块的大小,有基本不等式得M=Sqrt(N)时较优。分块将原数组分为M块,对M块的信息进行维护。这道题每个点记录一个它跳到下一个不是同一块的点是哪个点及需...

2018-03-16 12:00:00 44

转载 POJ2513_Colored Sticks_KEY

题目传送门题目大意:给你若干根木棍,每根木棍有前后两种颜色,连接两根木棍需要前后颜色相同,求能否将所有木棍连接在一起。Solution:不要将木棍看成点,将颜色看成点。其实就是求是否存在欧拉路径。有欧拉路径要满足两个条件:  图是连通图。  没有或只有两个入度为奇数的点。判断连通性用并查集。枚举每个点判断入度就好了。code:#includ...

2018-03-14 11:32:00 78

转载 POJ1035_Spell checker_KEY

题目传送门一道暴力可以过的水题。(直接暴力模拟的那种)但是我打Trie练练模板,但是TMD因为数组开太小卡了好久。code:#include <cstdio>#include <cstring>#include <iostream>#include <string>#include <map>...

2018-03-14 08:12:00 53

转载 BZOJ1597_土地购买_KEY

题目传送门一道斜率优化的题目。但暴力方程很关键。我们先将x作为关键字Sort一遍,再将y处理成单调递减,即把无用的土地去除。f[i]=f[j]+a[i]*b[j+1]-a[i]*b[j+1]+f[i]=f[j] k x + b = y然后单调队列维护凸包做斜率优化就好了。code:/***********************...

2018-03-13 18:06:00 39

转载 BZOJ2140_稳定婚姻_KEY

题目传送门暴力直接对于每个点跑一遍二分图匹配,能拿四十分。然而我们考虑正解。对于一对Couple我们建♂->♀的一条边,对于一对曾经有恋情的情侣我们建♀->♂的一条边。跑Tarjan缩点。判断每一对Couple,如果在同一个强连通分量里,他们就不稳定(即能通过曾经有恋情的关系跑回来)。code:/************************...

2018-03-13 15:37:00 41

转载 BZOJ1096_仓库建设_KEY

题目传送门一道斜率优化的题目,加深了印象。设sum[i]=∑p[i],S[i]=∑p[i]*x[i]。暴力方程加前缀和优化:f[i]=min(f[j]+c[i]+(sum[i]-sum[j])*x[i]-(S[i]-S[j])};然后变形:f[j]+c[i]+sum[i]*x[i]-(S[i]-S[j])=x[i]*sum[j]+f[i] ...

2018-03-12 10:15:00 52

转载 BZOJ1010_玩具装箱toy_KEY

题目传送门这道题可以很快想到暴力DP的做法:f[i]=min(f[i],f[j]+(C[i]-C[j]+i-j-1-L)^2);但是数据范围有50000,这就需要用斜率优化了。我们设S[i]=C[i]+i(C[i]为前缀和),L++,设j为i的最优决策点。。原方程就变为:f[i]=f[j]+(S[i]-(S[j]-L))^2;f[i]=f[j]+S[i...

2018-03-10 19:48:00 42

转载 Luogu1801_黑匣子_KEY

题目传送门借这道题练一下Treap和Splay的板子。code:#include <cstdio>#include <cstdlib>using namespace std;int read(){ char c;while(c=getchar(),(c<'0'||c>'9')&&c!='...

2018-03-09 15:27:00 39

转载 KMP~

模板传送门KMP的模板,但是要输出Nxt,搞得朱洪dalao的优化打不了。(题外话)KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next...

2018-03-09 12:40:00 51

转载 Splay初学习

例题传送门听YZ哥哥说Splay是一种很神奇的数据结构,所以学习了一下它的最基本操作。O(1)的Spaly。伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(logn)内完成插入、查找和删除操作。它由丹尼尔·斯立特Daniel Sleator和罗伯特·恩卓·塔扬Robert Endre Tarjan在1985年发明的。在伸展树上的一般操作都基于伸展操...

2018-03-09 08:40:00 59

转载 BZOJ2330_糖果_KEY

题目传送门看题目可知这是一道差分约束的题目。根据每种关系建边如下:对于每种情况建边,然后跑一边SPFA。(最长路)因为可能会有自环或环的情况,都不可能存在。跑SPFA时记录入队次数,超过N弹出。SPFA的dist起始值为1,ans=∑dist[i]对于每个点做一遍SPFA会超时,所以将所有点放入队列中,所有点一起跑SPFA。code:/****...

2018-03-08 11:06:00 54

转载 BZOJ3224_普通平衡树_KEY

题目传送门平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci数列,1是...

2018-03-07 20:34:00 75

转载 BZOJ2730_矿场搭建_KEY

题目传送门这道题用Tarjan求出点-双连通分量,对联通块做一些玄学操作。细节很多,不说了看code。code:/************************************************************** Problem: 2730 User: yekehe Language: C++ Resu...

2018-03-06 17:44:00 54

转载 BZOJ1452_Count_KEY

题目传送门二维树状数组,对于每个颜色开一个树状数组,用容斥求解。code:#include <cstdio>using namespace std;int read(){ char c;while(c=getchar(),c<'0'||c>'9'); int x=c-'0';while(c=getchar(),c...

2018-03-05 19:54:00 75

转载 初识主席树_Prefix XOR

主席树刚接触觉得超强,根本看不懂,看了几位dalao的代码后终于理解了主席树。先看一道例题:传送门题目大意:假设我们预处理出了每个数满足条件的最右边界。先考虑暴力做法,直接对x~y区间暴枚,求出答案。主席树做法:设主席树的下标表示边界为i的信息。网上找不到百度百科对主席树的定义,那我说说自己的理解。主席树是一棵可持久化线段树,可以找出线段树的历史版本。...

2018-03-04 19:30:00 61

转载 POJ3259_Wormholes_KEY

题目传送门题目大意:有F组数据,N表示有N点,M表示有M条边,走一遍边需要花费Ti个时间,还有W个虫洞,可以向前回溯Ti时间,求能否从1点出发,经过一些路或虫洞回到1点后时间为负。建图后用SPFA判负环即可。code:#include <cstdio>#include <cstring>using namespace std;i...

2018-03-03 16:22:00 55

转载 BZOJ1924_所驼门王的宝藏_KEY

题目传送门这道题苟了我好久,因为链表的内存问题,之后再细讲。首先这是一道Tarjan+DAG上DP的题目。有三种门,对于每种门可以和其他门相连。即连边。使用链表快速查询连边。建完图后可以进行Tarjan缩点。然后做一遍DAG上DP就好了。(记搜)然后因为建图时会有很多条边,而行列最多只有100000个,所以要分开定义。不然会爆内存。code:#...

2018-03-01 15:26:00 53

转载 BZOJ1066_蜥蜴_KEY

题目传送门经过长时间的旅行,很长时间没写过博客了,这次把上次WA的题目过了。由于每次蜥蜴从石柱上跳下时,石柱的高度会-1,可以看做占了一格的流量。建图:  1.建超级源和超级汇,设超级源连到每只蜥蜴的边容量为1,每个可以跳到外面的点连到超级汇的边的容量为maxlongint。  2.对于每个点建一个虚点,连边到此虚点,边容量为该点石柱高度。对于每个可以互相跳到的点,建...

2018-02-26 16:08:00 69

转载 BZOJ1433_假期的宿舍_KEY

题目传送门二分图匹配的题目。但建边有一定难度,关系比较复杂。首先要统计总共需要几张床。在校且住校的会需要一张床,不住校的需要一张床。然后对于在校且住校的与自己的床连边,不住校的与认识的住校的人连一条边。跑一遍匈牙利就好了。code:/************************************************************...

2018-02-13 14:23:00 41

空空如也

空空如也

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

TA关注的人

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