
bzoj
_ldxxx_
...
展开
-
【bzoj 1009】GT考试
传送门~解题思路求一个序列,要求其中没有任意一段与给定串匹配。 暴力做法:f[i][j]表示枚举到序列的第i个位置,在给定串中匹配到第j个位置的方案数。在第i+1个位置放0~9时会令j发生改变,改变到多少需要用到next数组。对于给定串的任意位置i,预处理出在第i+1个位置的十种选择方案中,转移到位置j的情况有几种, 可以视作M+1M+1M+1行M+1M+1M+1列矩阵GGG。...原创 2018-06-22 13:28:49 · 722 阅读 · 0 评论 -
【bzoj 4927】第一题
传送门~解题思路一道神题,被虐了好久才调出来。。。 用六根拼正方形一共只有两种情况: 对于情况(1),我们先将所有数排序,然后枚举 iii 作为图(1)中紫色的边,即上面三个边中最长的边,同时记录num[x]num[x]num[x]存前 i−1i−1i-1 个数两两相加得 xxx 的方案数。再从 iii 向后枚举 jjj 作为红色边来统计答案。 对于情况(2),先将排好序的数...原创 2018-01-17 16:57:36 · 322 阅读 · 0 评论 -
【bzoj 3932】任务查询系统
传送门~解题思路每个任务(Si,Ei,Pi),在Si的位置加入Pi,在Ei+1的位置删掉Pi,这样取前缀和就能表示每个点包含的所有数。 将每个任务拆成两个操作:在Si加Pi和在Ei减Pi。将所有操作排序后按操作建主席树。 然后还需要求个to数组,存询问中的每个时间点要在哪棵树中查询。 代码:#include<iostream>#include<algorithm>#include<cstr原创 2018-01-16 11:39:31 · 314 阅读 · 0 评论 -
【bzoj 4059】Non-boring sequences
传送门~解题思路考虑分治。虽然我觉得就是暴力 对于一个数,左边第一个与它一样的数的位置记为z[i],右边第一个记为y[i]。 对于区间[l,r],如果其中存在一个数i,使z[i] r,那么区间[l,r]是一定符合题目中条件的,只要这个区间的子区间[l,i-1]和[i+1,r]也符合条件,区间[l,r]就是不无聊的。于是这么分治下去就行了。 但是这么写会T,确切的说会被卡成 OO原创 2018-01-15 13:16:46 · 275 阅读 · 2 评论 -
【bzoj 2002】弹飞绵羊
传送门~解题思路可以LCT,分块稳稳水过。 分n−−√\sqrt{n}块,f[i]表示跳几次跳出当前所在块,g[i]表示跳出块以后落在哪一个节点。块内从后向前递推求出f[i]和g[i],修改和查询复杂度均为O((√n))O(\sqrt(n))。 分块代码:#include#include#include#include#include#include#include原创 2017-12-27 21:06:00 · 340 阅读 · 3 评论 -
【bzoj 2631】tree(LCT模板)
传送门~ LCT模板。 代码:#include<algorithm>#include<cmath>#include<cstring>#include<iostream>#include<string>#include<cstdio>#include<cstdlib>#define int long longusing namespace std;const int mod=51原创 2018-01-03 15:41:45 · 296 阅读 · 0 评论 -
【bzoj 2326】数学作业
传送门~解题思路矩阵乘法。 代码:#include#include#include#include#include#include#include#define ll long longusing namespace std;ll n,p,now=0;struct ldx{ ll s[4][4]; ldx() {memset(s,0,siz原创 2018-01-23 13:56:34 · 293 阅读 · 0 评论 -
【bzoj 1441】Min
传送门~解题思路裴蜀定理,S大于零的最小值一定是所有数的gcd。 代码:#include #include #include #include #include #include #include using namespace std; int ai,n,x; int main() { scanf("%d%d",&n,&ai); for(原创 2018-01-23 10:59:01 · 272 阅读 · 0 评论 -
【bzoj 1025】游戏
传送门~解题思路每个元素相当于一个入度、初读均为一的点,他们构成若干个环,且环大小之和为n。 于是问题转化成求所有和为n的序列可能的lcm有多少种。 可以证明,对于任意数xx=p1p1^a1∗p2a1*p2^a2∗a2*…∗pn*pn^anan, 若x为可行解之一,则必有:p1p1^a1a1+p2p2^a2a2+…+pnpn^an=nan 于是可以Dp,先预处理所有质数,f[i原创 2018-01-02 15:50:08 · 477 阅读 · 0 评论 -
【bzoj 4159】程序自动分析
传送门~解题思路先把所有相等情况加进并查集,在判不等就行了。 代码:#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<cstdio>#include<cmath>#include<cstdlib>using namespace std;struct ldx{ int原创 2018-01-15 11:38:19 · 260 阅读 · 0 评论 -
【bzoj 1497】最大获利
传送门~解题思路最大权闭合图。从原点向每个实验连边,流量为收益;每个实验向所需器材连边,流量为inf;每个器材向汇点连边,流量为成本。然后跑最小割。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstring>#include<string>#include<cstdio>#include<cstdli原创 2018-01-12 22:05:41 · 231 阅读 · 0 评论 -
【bzoj 4337】树的同构
传送门~解题思路树同构模板题。 为了保险用了双哈希。 选了极其暴力的方法处理两个重心的情况:对于每个重心分别求哈希值然后取max。 哈希的时候,每次将所有子节点的哈希值排好序拿出来,然后看心情瞎搞,随便乘一乘模一模,最后将根节点的哈希值作为整棵树的哈希值。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<c原创 2018-01-12 22:00:00 · 648 阅读 · 0 评论 -
【bzoj 3238】差异
传送门~解题思路求后缀数组以后搞个单调栈。 因为height数组的意义让这个单调栈很烦,注意要理清思路再写。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstring>#include<string>#include<cstdio>#include<cstdlib>using namespace原创 2018-01-12 21:53:33 · 274 阅读 · 0 评论 -
【bzoj 1503】郁闷的出纳员
传送门~解题思路要求维护一棵支持查后继和第k大的splay。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstring>#include<string>#include<cstdio>#include<cstdlib>using namespace std;int inf=1e9;struct原创 2018-01-12 21:47:26 · 311 阅读 · 0 评论 -
【bzoj 4563】放棋子
传送门~解题思路错排公式:f(n)=(n−1)∗(f(n−1)+f(n−2))f(n)=(n-1)*(f(n-1)+f(n-2)); 特殊的:f(1)=0,f(2)=1f(1)=0,f(2)=1。 代码:#include#include#include#include#include#include#includeusing namespace std;st原创 2018-01-17 17:16:45 · 238 阅读 · 0 评论 -
【bzoj 1458】士兵占领
传送门~解题思路建图:先在棋盘上摆满士兵,求最多拿走多少士兵仍能满足条件,就可以跑最大流了。 源点向每一行连边,每一列向汇点连边。矩阵中每一个点如果不是障碍物就从那一行向那一列连一条流量为1的边。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstring>#include<string>#includ原创 2018-01-10 12:06:24 · 247 阅读 · 0 评论 -
【bzoj 2435】道路修建
传送门~解题思路看了题面觉得极水,本来想顺手水一下,结果一直RE。。。 后来发下此题卡系统栈。。。mdzz。。 所以dfs要少传几个参要不就会RE。 代码:#include#include#include#include#include#include#includeusing namespace std;int hed[1000005],nex[200000原创 2018-01-12 21:40:51 · 232 阅读 · 0 评论 -
【bzoj 1008】越狱
传送门~解题思路直接求越狱情况不好求,但是不越狱情况很好求,就是m*(m-1)^n。 然后用总情况减去就好了。 代码:#include<cstdio> #include<algorithm> #include<cmath> #include<iostream> #include<cstring> #in...原创 2018-06-21 20:08:16 · 266 阅读 · 0 评论 -
【bzoj 3489】A simple rmq problem(KD-Tree模板)
传送门~ 作为简易的K−dK−dK-d treetreetree模板 将一个数作为一个点(x,y,z)(x,y,z)(x,y,z) xxx为该点位置,yyy为左面第一个和它一样的数的位置,zzz是右面第一个和他一样的数的位置 问题转化成,给定lll和rrr,求一个权值最大的点,使 y<ly<lyz>rz>rz>r r=>x=>lr=>x=...原创 2018-03-26 17:00:19 · 272 阅读 · 0 评论 -
【bzoj 2017】硬币游戏
传送门~ 非常棒的一道题。f[i][j]" role="presentation" style="position: relative;">f[i][j]f[i][j]f[i][j]表示剩i枚硬币时取j个最多拿到多少,sum[i]" role="presentation" style="position: relative;">sum[i]sum[i]sum[i]表示最后i枚硬币的价值和,状态转原创 2018-01-28 21:48:39 · 378 阅读 · 1 评论 -
【bzoj 1552】排序机械臂
传送门~解题思路支持区间翻转。 代码:#include#include#include#include#include#include#includeusing namespace std;int n;struct ldx{ int x,wi; bool operator < (const ldx p) const{ ret原创 2018-01-28 21:39:14 · 266 阅读 · 0 评论 -
【bzoj 2743】采花
传送门~解题思路将所有询问(x,y)" role="presentation" style="position: relative;">(x,y)(x,y)(x,y)按y" role="presentation" style="position: relative;">yyy排序,用一个树状数组维护前y" role="presentation" style="position: rel原创 2018-01-28 21:32:34 · 267 阅读 · 0 评论 -
【bzoj 2257】瓶子和燃料
传送门~解题思路n" role="presentation" style="position: relative;">nnn 个数中选 k" role="presentation" style="position: relative;">kkk 个使这 k" role="presentation" style="position: relative;">kkk 个数的最大公因数尽可能大原创 2018-01-23 11:14:28 · 290 阅读 · 0 评论 -
【bzoj 3132】上帝造题的七分钟
传送门解题思路二维树状数组。 对于修改操作单开一个矩阵,修改时利用差分思想,这样每个点S[i][j]" role="presentation" style="position: relative;">S[i][j]S[i][j]S[i][j]的前缀和表示这个点修改了多少。 对于一个查询(x,y)" role="presentation" style="position: relat原创 2018-01-28 21:23:12 · 279 阅读 · 0 评论 -
【bzoj 1070】修车
传送门~解题思路把 m" role="presentation" style="position: relative;">mmm 个技术人员拆成 n" role="presentation" style="position: relative;">nnn 个点,分别表示这个技术人员修的倒数第 i" role="presentation" style="position: relativ原创 2018-01-28 21:00:13 · 278 阅读 · 0 评论 -
【bzoj 2005】能量采集
传送门~解题思路对于一个点(x,y)(x,y),设gcd(x,y)=t\gcd(x,y)=t,点(x,y)(x,y)对答案的贡献为(t−1)×2+1=t×2−1(t-1)\times2+1=t\times2-1。 用f[i]f[i]表示最大公因数为ii的(x,y)(x,y)有多少个。易证以ii为公因数的个数为(n÷i)×(m÷i)(n\div i)\times(m\div i),再减原创 2018-01-19 16:20:50 · 214 阅读 · 0 评论 -
【bzoj 1013】球形空间产生器sphere
传送门~解题思路用距离公式以后式子里有r2r^2,所以相邻两个式子相减消去r2r^2,之后高斯消元。 代码#include<algorithm>#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>using namespace std;d原创 2018-01-19 10:18:54 · 333 阅读 · 0 评论 -
【bzoj 4034】树上操作
Description 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。Input 第一行包含两个整数 N, M 。表示点数和操作数。接下来一行 N 个整数,表示树中节点的初原创 2017-10-31 17:32:09 · 1355 阅读 · 2 评论 -
【bzoj 1031】字符加密Cipher(后缀数组模板)
传送门~解题思路后缀数组模板。 dalao的详细讲解:链接 代码:#include#include#include#includestring>#include#include#includeusing namespace std;int sa[200005];int rank[200005];int x[200005];int y[200005];原创 2018-01-07 09:55:25 · 237 阅读 · 0 评论 -
【bzoj 3037】创世纪
传送门~解题思路贪心思想,首先建图后每个入度为零的点一定不选,瞎j8画图后发现如果一个点不选,它限制的点一定是选了最优。因为每个点只有一个出度,选到最后一定剩若干个简单环,大小为n的环一定可以选n/2个点,然后统计答案就好了。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstdio>#include<cs原创 2018-01-10 11:43:53 · 385 阅读 · 0 评论 -
【bzoj 2599】Race
传送门~解题思路点分治练习。 注意k值太大不能memset,所以用了时间戳。 注意不能走的点的标记的处理。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstring>#include<string>#include<cstdio>#include<cstdlib>using namespace原创 2018-01-12 21:37:19 · 201 阅读 · 0 评论 -
【bzoj 3173】最长上升子序列
传送门~解题思路因为是1~n顺序插入,所以新插入元素不会对之前已经求出的值产生影响。以新插入元素为结尾的最长上升子序列为它插入位置之前所有元素的maxx加1。用平衡树维护,支持插入和查询。 代码:#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cst原创 2017-12-27 21:30:55 · 293 阅读 · 2 评论 -
【bzoj 1121】激光发射器SZK
传送门~解题思路伟大的物理学。。。 代码:#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<cstdio>#include<cmath>#include<cstdlib>using namespace std;int n;int main(){ scanf("%d"原创 2017-12-27 20:52:45 · 277 阅读 · 1 评论 -
【bzoj 2460】元素
传送门~解题思路关于线性基请参照这位大佬的博客:http://www.cnblogs.com/vb4896/p/6149022.html 求出线性基顺便贪一下。 代码:#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<string>#include<iostream>#include原创 2018-01-03 08:07:47 · 269 阅读 · 0 评论 -
【bzoj 1823】满汉全席
传送门~解题思路每个菜品分为满式和汉式两个点,若选了A点就必选B点则由A向B连边。最后Tarjan缩点,若存在一个菜品的满式和汉式在一个强连通分量中,则该方案不合法。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<string>#inclu原创 2018-01-03 07:52:00 · 332 阅读 · 2 评论 -
【bzoj 1588】营业额统计
传送门~解题思路按大小顺序建链表,然后按从后向前的顺序依次删除每个元素并统计答案。 稳稳水过,需要一些奇技淫巧。 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstring>#include<string>#include<cstdio>#include<cstdlib>using namespac原创 2018-01-02 20:53:47 · 286 阅读 · 0 评论 -
【bzoj 3039】玉蟾宫
传送门~解题思路极大化思想求最大子矩形。 详见王知昆的论文链接 代码:#include<algorithm>#include<iostream>#include<cmath>#include<cstring>#include<string>#include<cstdio>#include<cstdlib>using namespace std;int f[1005][1005],原创 2018-01-02 20:43:35 · 330 阅读 · 0 评论 -
【bzoj 1176】Mokia
传送门~解题思路CDQ模板,三维偏序问题。 第一维排序,第二维分治,第三维随便一个数据结构,这里用的是树状数组。 代码:#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<string>#include<cstdlib>using namespace std;struct xw原创 2018-01-02 17:24:40 · 283 阅读 · 0 评论 -
【bzoj 1468】tree
传送门~解题思路点分治 代码:#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<string>#include<cmath>#include<cstdlib>using namespace std;struct node{ int x,y,num; node*原创 2018-01-02 17:15:17 · 229 阅读 · 0 评论 -
【bzoj 2738】矩阵乘法
传送门~解题思路整体二分。将一个询问拆成四个,二分答案x,查询每块中有多少比x小的数以验证答案。 代码:#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<string>#include<cstdlib>using namespace std;struct zhen{ i原创 2018-01-02 16:41:54 · 365 阅读 · 0 评论