自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Magic_Sheep的博客

朝向无法临近的彼端

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

原创 普通Windows10家庭版 安装OpenFaaS + Docker + k8s集群

普通家庭版Windows10 部署k8s集群和OpenFaaS

2022-03-07 23:27:10 882 1

原创 HDU 6704 K-th occurrence 后缀数组+主席树维护sa数组

You are given a string S consisting of only lowercase English letters and some queries.For each query (l,r,k), please output the starting position of the k-th occurence of the substring SlSl+1…Sr in ...

2019-08-28 17:53:38 180

原创 POJ 2411 Mondriaan's Dream 状态压缩DP

题目很好理解 就是有一些1X2的小矩形 问将其填充到 NxM的大矩形 一共有多少种方案。比较明显的状压DP,最关键的是状态的选择。我们可以吧竖着的 1x2 矩形的上半部分 当作1 吧其他状况当作0 压缩状态然后 我们只需要保证 每一行与前一行与状态为0 按位与的结果中不存在连续奇数个0之后,我们可以得到DP方程 f[i,j] = Σ f[i-1,k] j&k=0 &&amp...

2019-07-12 16:55:51 128

原创 POJ 3171 Cleaning Shifts 线段树优化DP

题面大意:有N个线段,每个线段可以覆盖一段区间T1-T2 花费为S,求选出几个线段使得其完全覆盖M 到E 这一区间 并要求花费最少。复杂度要求 nlog(E)。这道题数据比较水,不要求离散化。考虑DP f[T2] = min(f[x]) +c {T1-1<=x<T2}整个f数列可以用一颗线段树维护,维护最小值在这里插入代码片...

2019-07-12 16:41:29 99

原创 HihoCoder 1952 运算数

给出一棵2n-1个点的二叉树,所有节点从1到2n-1编号,根节点编号为1。每个非叶子节点都有两个孩子,共有n-1个非叶子节点和n个叶子节点。每一个非叶子节点被标记了+或者×。给出n个正整数a1…an,这n个数被随机打乱填入了n个叶子节点中,一共有n!种填法。接着按照如下规则把数字填入非叶子节点i中:设i的左儿子上的数为li,右儿子上的数为ri,如果i的标记是+,则把li + ri填入i中,否则把...

2019-04-18 15:35:30 168

原创 hihocoder 编程练习赛98 部分解题报告与题解

A - 推断上下级HihoCoder - 1947H公司包括CEO在内,一共有N名员工,编号1~N,其中CEO的编号是1。除了CEO之外,其他员工都有唯一一名直接上司,形成了一种树形的上下级关系。现在小Hi知道H公司所有的上下级关系,一共M对。换句话说,只要两名员工A和B之间存在上下级关系(直接或者间接),那么A和B一定在这M对关系之中。请你帮小Hi推断出每个人的直接上级是谁。从题面可以...

2019-04-17 18:57:18 342

原创 BZOJ 4551: [Tjoi2016&Heoi2016]树 并查集

这年的HEOI 是在数据有点水,据说一堆写BFS都100了。正解使用并查集反向维护,感觉是不是很难,毕竟DAY1 T1。树链剖分接线段树是可做的,但是吧…代码量瞬间就上来了。主体思想,把正向加点改为反向删点。 每个并查集的代表元素为被标记的点 ,集合存的是答案。删点时直接将并查集合并即可。#include&lt;cstdio&gt;#include&lt;iostream&gt;#inc...

2018-12-17 20:18:32 171

原创 BZOJ 1131: [POI2008]Sta 树形DP

题目本身并不难,POI的题真是又经典又好。本题卡vector 不开快读的vector存图很容易被卡 本人就被卡了人傻自带大常数题目本身要求在无根树中选一个节点作根,使形成的有根树所有结点深度和最大。考虑到 对于相邻的两个结点 转移是O(1)的,假设结点u的答案是H[u],其子节点v从H[u]到H[v]只需 考虑转移后对v的子树 和剩余结点即可。H[v]=H[u]+n-2*sz[v];补...

2018-12-17 20:07:20 128

原创 树链剖分讲解与应用 && BZOJ 1036 [ZJOI2008]树的统计Count

树链剖分算是一个应用比较广泛而且比较好实现的一种方法,其大体思想主要是把树链分成轻链和重链,这样既可以套用数据结构也可以求LCA。首先定义 重儿子和轻儿子,对于一个非叶子节点,它的所有儿子中子树大小最大的即为重儿子,其余的为轻儿子。我们可以用一次dfs来求出所有的重儿子,重儿子连成的树链即为重链,其余的为轻链,可以证明所有的重链不超过logn条。对于每个节点还要维护其深度大小…..之后

2018-12-16 12:42:01 270

原创 Dev c++ 5.11 调试方法入门 初学者适用

Dev c++ 虽然功能上和美观度上比不上 CodeBlocks 和 sublime,但这个IDE调试还是比较简单的,在OI 或 ACM 上 用到的可能性 还是有的。许多人的Dev 有 一调试 就闪退 GDB 报 error 的情况本人开始也遇到了 解决方案如下打开编译选项 把产生调试信息打开 (变成yes 后面会有图片)之后在编写完代码后 开始调试 让我们随便写点直接在行标前点一...

2018-12-09 22:21:54 11823 8

原创 Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) 划水题解

由于博主水平较低,只有A到E题的题解。A题面大意是,给出三条边长度,每分钟能够使其中一条边的长度加一。求最短多长时间能使三条边组成三角形。题解:考虑贪心,由于比较简单,就直接放代码了。#include&amp;lt;cstdio&amp;gt;#include&amp;lt;iostream&amp;gt;#include&amp;lt;algorithm&amp;gt;#include&amp;lt;cstring&a

2018-11-30 11:22:24 115

原创 BZOJ 1050 [HAOI2006]旅行comf

动点spfa,并不知道复杂度多少。#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue>using namespace std;const int maxn = 1001050;int dist[maxn]

2017-04-20 09:58:57 342

原创 BZOJ 4129 Haruna’s Breakfast

同糖果公园,直接树分块套带修莫队即可。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<vector>#include<cmath>using namespace std;const int maxn = 505000;vector<int> f[maxn],g[maxn];

2017-04-20 09:54:56 347

原创 BZOJ 2780 后缀自动机

由于是英文题,简要解释一下题目。开始给出n个子串,和m个询问,对于每个询问读入一个子串,询问n个子串中,有多少个子串包含所询问的子串。实在看不懂的可以从样例中意会一下。#include <cstdio>#include <iostream>#include <algorithm>#include <vector>#include <cstring>#include <set>using

2017-03-28 15:29:50 451

原创 BZOJ 3262 陌上花开 三维偏序 树状数组套Treap

一共三维,第一维排序,第二维树状数组,第三维Treap#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>#include<cmath>using namespace std;const int maxn = 3000050;int size,n,k,p,val,x,

2017-03-28 15:23:33 609

原创 BZOJ 3172 [Tjoi2013]单词 后缀自动机

其实这显然是一道AC自动机裸题,这里补上后缀自动机做法。#include <bits/stdc++.h>using namespace std;#define maxn 1100000int n,len;string s[500];struct SAM{ int a[maxn<<1][28],fa[maxn<<1],mx[maxn<<1],num[maxn<<1]; in

2017-03-28 15:18:45 1287

原创 BZOJ 3166 [Heoi2013]Alo

明显可以用可持久化01Trie树来搞,Tire树可持久化方式同主席树。用set判断可行区间具体见代码。#include<cstdio>#include<iostream>#include<set>#include<algorithm>using namespace std;const int maxn = 55000;const int inf = 0x3f3f3f3f;const i

2017-03-25 21:20:33 344 1

原创 BZOJ 1797 [Ahoi2009]Mincut 最小割

最小割的必须边 一定在最小割中的边、扩大容量后能增大最大流的边,Poj3204: ① 满流;② 残余网络中S能到入点、出点能到T。 从S开始DFS、T开始反向DFS,标记到达的点,然后枚举满流边即可。最小割的可行边 被某一种最小割的方案包含的边,AHOI2009: ① 满流;② 删掉之后在残余网络中找不到u到v的路径。 在残余网络中tarjan求SCC,(u,v)两点在同一SCC中说明残

2017-03-25 21:14:09 363

原创 BZOJ 1822 [JSOI2010]Frozen Nova 冷冻波

很明显的一道最大流,利用计算几何判断是否被攻击的关系。二分时间以判断攻击次数,每次重新建图。#include<cstdio>#include<iostream>#include<cstring>#include<vector>#include<queue>#include<stack> #include<cmath>using namespace std;const int maxn

2017-03-25 20:28:26 412

转载 BZOJ 3277&&3473 广义后缀自动机

两道题一模一样,不说什么了。对于所有串建立广义后缀自动机,用set维护每个状态出现在哪些串里,构建出parent树结构,进行一遍dfs 逆序启发式合并set即可。统计答案只要在自动机上跑一遍如果k#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<set>#include<vector

2017-03-21 11:53:20 430

原创 BZOJ 1180: [CROATIAN2009]OTOCI

动态树裸题,维护sum时注意一下splay和access的对象即可。还有 rev[x]^1。。。rev[x]^=1;#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int maxn = 50000;int ch[maxn][2],sum[maxn],fa[maxn],val[max

2017-03-21 11:38:47 348

原创 BZOJ 3224 普通平衡树 Trie树

本文介绍一个简短好写的数据结构,01trie树,它可以支持普通平衡树所要求所有操作,而且简单易懂。代码是在网上看的,作者不详,希望原作者注明来源。对于每个数进行二进制拆分,把拆成的01串插进Trie树中。 由于负数的二进制处理比较麻烦,所以我们不如把其补成正整数,询问时再减去即可。 其余的见代码吧,相当好理解。#include <cstdio>#define ls(x) (ch[x][0])

2017-03-18 21:20:33 791 1

原创 bzoj 3524: [Poi2014]Couriers 随机化算法

正常人一般都写主席树,受到sxysxy神犇的启发,我也尝试了一下随机化算法,因为每一个区间内重复超过一半的数很容易随机出来,所以我们每次在区间内rand出一个位置,看该位置的数是否在区间内超过一半,如果rand次数超过固定值则输出 0 。判断时可以使用stl,具体见代码。期望复杂度 O(nlog^2n) 实际复杂度 玄学??此代码在 WA TLE 和 AC 间徘徊….#include<cstdio>

2017-03-16 21:35:43 549

原创 BZOJ 2982 combination

lucas定理裸题,表达式:C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p 由于p为素数 根据费马小定理: 已知(a, p) = 1,则 a^p-1 ≡ 1 (mod p),  所以 a*a^p-2 ≡ 1 (mod p)。 也就是 (m!(n-m)!)的逆元为 (m!(n-m)!)^p-2#include<cstdio>#include<iostream>#defi

2017-03-16 21:24:06 373

原创 BZOJ 4033 [HAOI2015]树上染色

一道树形dp,dp[u][k]表示第u个节点染k个黑点的最大值。 有点像树形背包,复杂度可以看作是枚举LCA 为 O(n^2)。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<vector>using namespace std;#define LL long longcon

2017-03-16 21:12:14 372

原创 BZOJ 2946 [Poi2000]公共串

第一个串建立后缀自动机,其余串在后缀自动机上进行匹配,每个状态记录所有串匹配最小值,最后对所有状态求最大值即可。对mx[]排序可以得到后缀树和自动机的拓扑序。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=4010;int n,

2017-03-16 21:06:31 539

原创 BZOJ 2555: SubString 动态树+后缀自动机

首先,这是一道代码题,利用动态树维护后缀自动机的parent树,如果不是强制在线,可能会好写一点。对于每个询问,找到被询问节点所在的right集合,集合大小即为答案。注意,这里的LCT为有向的,写起来有些不一样。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;

2017-03-16 19:46:37 268

原创 BZOJ 1036 [ZJOI2008]树的统计Count

树链剖分挺好的练手题,直接放代码吧。/**************************************************************    Problem: 1036    User: vermouth    Language: C++    Result: Accepted    Time:2756 ms    Memory:152744 kb*****

2017-03-10 21:45:27 271

原创 BZOJ 2594 [Wc2006]水管局长数据加强版

由于题目有删除操作,所以我们不妨倒叙枚举,把删边变成加边。某人还起了个好听的名字叫“时光倒流”……之后用动态树维护一下动态最小生成树就行了,每加入一条边就用动态树树找出两点见最长边,比较大小看是否能替换就行了。这里还有一个小技巧,就是二分边标号来找出每个询问所对应的边的标号。24700ms 刚好卡时。/*************************************************

2017-03-10 21:35:28 321

原创 BZOJ 3112 [Zjoi2013]防守战线

同 noi 2008 志愿者招募,把基变量和非基变量改改就行了;ps:这题要用 long long#include<cstdio>#include<iostream>#include<cstring>#include<cmath>using namespace std;const int maxn=100010;const double inf = 10000000000000.00;

2017-03-08 20:05:28 431 1

原创 BZOJ 1061 [noi2008] 志愿者招募

单纯形裸题….话说单纯形好像只有裸题。 b数组为基变量,c数组为非基变量。当所有非基变量系数小于0时,我们令所有的非基变量等于0最优解及后面的常数。#include<cstdio>#include<iostream>#include<cstring>#include<cmath>using namespace std;const int maxn=100010;const double

2017-03-08 20:00:15 279

原创 COGS 2123. [HZOI 2015] Glass Beads

最小表示法,这里用后缀自动机实现。 刚刚学了后缀自动机,懵逼中。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<queue>using namespace std;const int maxn=3001000;char s[maxn*2];int n;struct sam

2017-03-06 21:00:33 330 2

原创 BZOJ 2809 Apio2012]dispatching 斜堆 可并堆

由题意可知,对于每个子树内用一定费用来雇忍者使得根节点的忍者领导能力*雇佣人数最大。对于每个子树可以用堆来维护费用的大小,每次合并两个子树时,合并两个堆就行了…..所以这里我们需要使用到可并堆。本人码力较低,代码中使用的的是斜堆,个人认为比较好写,只有一个merge操作,加入新节点只要合并即可,删除节点时只需把根节点的左右儿子合并。每次操作时间复杂度均摊O(nlogn)(QAQ并不会证)。#incl

2017-03-06 20:10:58 280

原创 bzoj 3105 线性基

就正常的nim游戏来说,异或和为0先手必败,所以对于第一次取只要构造出没有异或和为0的子集的线性基就行了。#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int maxn = 10005;int n,a[maxn],b[maxn],ins[maxn],cnt;long long

2017-03-03 21:33:11 231

原创 bzoj 4568 [Scoi2016]幸运数字 倍增+线性基

首先我们可以先预处理倍增链上的线性基,需要合并两个线性基时暴力合并就行了。bzoj时限60s 可以卡过去。#include<cstdio>#include<iostream>#include<cstring>#include<vector>#include<algorithm>#define ll long longusing namespace std;const int maxn=

2017-03-03 21:03:22 372

原创 BZOJ 4199 [Noi2015]品酒大会

后缀数组好题,把height从大到小排序,利用并查集维护每个height值大于0的后缀。由于权值可能为负,所以维护最大值的同时还要维护最小值,每次合并左右相邻rankps:有抄代码的嫌疑…..#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define ll long longusing name

2017-03-03 20:50:49 255

原创 BZOJ 2440 完全平方数 莫比乌斯函数应用

线性筛求莫比乌斯函数练手题,具体见代码。#include<cstdio>#include<iostream>#include<cstring>#include<cmath> #define ll long longusing namespace std;const int maxn=500000;int mu[maxn],prime[maxn],tot;bool mark[maxn]

2017-02-28 21:56:06 221

原创 BZOJ 1568 [JSOI2008]Blue Mary开公司 标记永久化线段树

标记永久化线段树裸题,大体思路如下。如果当前线段完全低于插入线段,则对插入线段进行标记。如果当前线段完全高于插入线段,则直接放弃。其余分情况讨论......首先求出两条直线交点坐标,将长的线段作为当前节点的标记,短的线段继续下放。#include<cstdio>#include<iostream>#include<cstring>#include<cmath>using names

2017-02-28 21:34:14 294

原创 BZOJ 4515 [Sdoi2016]游戏

题目描述: 每次询问树上的一段路径,求出路径上点权最小值。修改操作,选择一段路径使路径上的每个点又新加入一个数字为 a×dis+b。每个点的初始数字为123456789123456789。可以树链剖分,对于a*dis+b的式子,可以转化成一条线段,于是问题转化成动态维护区间内线段的最低点。可以用标记不下放线段树来维护。#include<cstdio>#include<iostream>#incl

2017-02-28 21:22:28 308

原创 BZOJ 1833[ZJOI2010]count 数字计数

这种数位DP还是用刷表法比较好,记忆化搜索不太好写。/**************************************************************    Problem: 1833    User: vermouth    Language: C++    Result: Accepted    Time:40 ms    Memory:9496 kb*

2017-02-28 21:03:38 190

空空如也

空空如也

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

TA关注的人

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