日常记录 至2018.12.06

bzoj5310:退背包。

bzoj1097:最短路+状压dp。

bzoj1098:反向图联通块个数。链表+bfs。

bzoj1054:bfs

bzoj1027:Floyd最小环

bzoj1018:用线段树维护区间的四个端点的联通情况,然后查询的时候,把所有覆盖到的区间合并起来即可。

bzoj1037:任意一段的男生与女生差<=k,那么f[i][j]:i个男生,j个女生的方案数,这样只能满足1~i+j这段区间是合法的,所以f[i][j][x][y]表示从当前点往前延伸最大的男生-女生,女生-男生。

bzoj1090:区间dp,f[i][j]枚举一个k转移,如果前i~k可以组成整个字符串,那么可以考虑合并起来。

bzoj1103:树链剖分求1到每个点的路径上1的个数,欧拉序+树状数组更简单!

bzoj1067:线段树维护最大最小值+分类讨论。

bzoj1071好题!

bzoj1178:按编号顺序枚举,考虑这条线段[l,r]是否加入,如果加入后,和以前的确定的线段不重复,前驱是tl,后继是tr,那么tl~l-1,r+1~tr,区间的最优值加上1应该等于tl,tr的最优值。去掉包含的线段,倍增维护每条线段往后2^i步的是谁+set维护已经确定的线段。

bzoj1126:dp的状态很奇妙啊。每次可以走的状态是一个矩形,所以维护举行就行了。空间太大,滚动掉一维。

bzoj1125:对每个子串维护一个hash,对每个hash维护一个splay,然后一个点会从一个splay中删除,并插入到另一个splay中,这个splay中的所有点就要更新,打标记。

bzoj1102:bfs搜出相同高度的,然后枚举相邻的格子,比较大小。

bzoj1104:题意啊?

bzoj1105:思路题,没想到啊,每个点翻转后,一定是x,y交换,即关于y=x这条直线对称。所以最短的周长一定是所有的点在这条直线同一侧。那么求出周长后,考虑矩形的摆放位置,共四种情况。

bzoj1106:奇妙的题,奇妙的贪心。一对数字可以交换后消去,那么就直接交换,与顺序无关。一个数字一定是要交换的那么找到另一个它,然后计算需要交换几步,然后把这个数字删掉。开始想的是先删距离小的,但是根据上面的性质与顺序无关,所以删哪个都行。

bzoj1107:好题!一个点所能到的点是一个区间。建反向图后可以走到1和n的点就是1,n号点都可以到的点。求1号点可以到k号点(中间都可以到)就是k-1到k中最长不上升子序列长度。

bzoj1108:任意一种匹配方案都是合法的,所以直接求坐标差的和。

bzoj4892:二分+hach/SA,或者SAM。hash/SA使用来求lcp的。

 

2018-11-30

bzoj1109:好题!首先是dp,f[i]表示到第i个的最优值,f[i]=f[j]+1,(j<i,a[j]<a[i],j-a[j]<i-a[i]),然后三维偏序,cdq维护转移。实际上由a[j]<a[i]和j-a[j]<i-a[i]可以推出j<i所以二维偏序,直接LIS。

bzoj1110:首先一定选前k个,然后二分这个k,每个都需要选,所以,从大的往后扫,每次取出当前最大的背包看是否可以放进去(如果有x,y都可以放,放进大的更优,因为放进后剩下的背包很是比较大的,堆维护)。还有进制拆分思想。

hdu5542:树状数组维护转移。

bzoj1112:权值线段树求中位数(或者平衡树,堆)。注意有0,所以整体加1。

bzoj1113:单调栈即可。zz的写了线段树。。。

bzoj1116:奇妙!并查集,如果一个联通块是可行的,必须满足存在大于等于点数条边。

bzoj5068:枚举前k-1个正负性,去掉绝对值符号,扫一遍。

 

2018-12-01

bzoj1150:贪心。用堆维护取最小的,每次取一条,删掉旁边两条,加入 旁边两条的和-当前这条

bzoj2288:转化为上面的问题。

bzoj1131:树形dp。从上一个节点转移到下一个节点,只需要知道下一个节点的siz即可,O(1)转移。

 

 2018-12-02

bzoj1127:特判是否有合法的点,否则找到全由<k的点组成的矩形(悬线法),一定存在一个子矩形满足。

bzoj1135:转化为二分图模型,利用hall定理,判断最劣的情况是否满足。

bzoj1123:tarjan求割点的过程中,求出删掉这个点的不连通的点对个数(对tarjan理解深刻)

 

2018-12-03

bzoj4558:容斥原理+计算几何计数。

bzoj1122:首先确定修改多少次使加号减号的差满足p-q的限制,然后减号尽量在后面改,加号在前面改,枚举旋转的操作,求前缀最小值。

bzoj1117:贪心,越晚放越好,记录两个数组,距离当前点为i的有多少需要被覆盖,和从当前点出发,可以覆盖距离为i点多少个。

bzoj1125:基环树。

bzoj4010:反图拓扑求字典序最大的方案(堆维护)

 

2018-12-04

bzoj5462:二分+set+线段树套set,每个叶子结点一个set或者堆。

luogu4292:分数规划+点分治/长链剖分。

bzoj3620:kmp+暴力。

 

2018-12-05

bzoj1912:求两遍直径,求出第一条后权值设为-1,再求一次。两次bfs不能求带权直径!

bzoj1130:有效状态为$C_{26}^{13}$,所以直接搜索就好了。

CF959E:找规律,求$\sum_{i=1}^{n} lowbit(i)$

bzoj4826: 莫队+st表+单调栈。类似bzoj4540。正解线段树。

 

2018-12-06

bzoj2243:链剖+线段树。

bzoj2456:求众数,空间1M,不要用太多头文件和模板库。

bzoj2809:dfs序+主席树。正解是可并堆(左偏树)。

bzoj3295:cdq分治+树状数组。

 

 

50道题,完结撒花~~~

大多是POI的题和bzoj前两页的题。开始时没加时间,后来心血来潮,加上了时间。

posted @ 2018-12-05 11:26  MJT12044  阅读(212)  评论(0编辑  收藏  举报