摘要: 题意 "Here" 思考 今天练习的第二道模拟退火…… $WA$ 了好几次发现是最后没有开根号!! 参考了一下 $attack$ 的题解,主要思路是先随机分组,然后随机选一个数分到权值最小的组里来退火。(ps:玄学质数好用) 代码 cpp include using namespace std; t 阅读全文
posted @ 2018-11-06 19:31 alecli 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 为了 $NOIP$ 前练习玄学算法模拟退火,于是 $A$ 了这道 ~~黑题~~,这题正解好像是 $A^ ?$ 先随机一波排列,然后随机两头牛来交换位置进行退火,但总之这是个~~玄学看脸算法(雾)~~ 代码 cpp include using namespace std; i 阅读全文
posted @ 2018-11-06 19:14 alecli 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 简要题意就是给定一个排列,每个元素有两个对应关系,问你是否能将该排列转换为另一个排列,并使之字典序最小,如果不考虑字典序的话,这题就是裸的一道求二分图完美匹配的题,那么我们该如何考虑字典序呢? 我们可以按字典序暴力枚举左边的点与右边的哪个点相匹配,再跑二分图。 实际上我们可 阅读全文
posted @ 2018-11-06 14:32 alecli 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 看第一眼:状压dp,再看范围gg 第二眼:普通dp,貌似可以直接递推? 其实就是个很裸的错排问题,写个博客顺便复习下~ 错排问题就是说一个 $n$ 的排列,每个元素都满足 $a[i] != i$,求方案数 记 $f[n]$ 为 $n$ 的错排方案数,我们可以考虑递推: 1. 阅读全文
posted @ 2018-11-05 23:34 alecli 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 树上链修改,树上链查询,考虑树链剖分 染色操作:线段树区间修改,注意 $lazy$ 数组的赋初值 查询操作,线段树每个节点记录该段左端点颜色和右端点颜色,树上跳 $top$ 的时候注意合并的处理,(如果现在端的右端点颜色等于上一段左端点颜色,就少计一种颜色),主要是细节问题 阅读全文
posted @ 2018-11-05 21:55 alecli 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 严格次小生成树,就是求出严格的次小生成树~ 次小生成树其实是很好求的,枚举每一个没选的边 $(u, v, d)$,用它来替换 $u, v$ 间的最大边即可,但是存在没选的边与要替换的边权值相等,那么就会出现次小生成树的权值等于最小生成树的权值,这样就不“严格”了。 当然求严 阅读全文
posted @ 2018-11-05 20:41 alecli 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 这题题意简要来讲就是:给定树上许多条链,求删掉一条边后,所有链的最大值最小是多少 首先,各个点对间的距离可以用lca求出,主要问题是怎样考虑这个删边,删除一条边后会有以下两种情况: 1. 取得最大值的点对间经过该边 2. 取得最大值的点对间不经过该边 这样就很难处理了,我们 阅读全文
posted @ 2018-11-05 20:17 alecli 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 $WQS$ 二分,第一次做,感觉细节有点多。 由于要求选 $need$ 条白边,我们考虑每次给所有白边加上一个权值,再与黑边一起做生成树,这样就可以限制我们加入白边的个数了,但是这样我们还存在一个问题,如果有白边等于黑边权值,我们可能会先统计黑边,造成白边达不到 $need 阅读全文
posted @ 2018-11-05 13:46 alecli 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 这其实是一道哈希模板题,题目定义“相似串”:两字符串只有一处不同。 很容易想到哈希,我们枚举每一位,将该位的哈希值删除后重新比较两串即可,主要实现也很简单,主要类比进制就好了。($ps$ :我再也不相信单模数哈希了),如何记录答案?肯定不能 $n^2$ 记录啦,将去掉某位的 阅读全文
posted @ 2018-11-04 21:57 alecli 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题意 "Here" 思考 跑最短路再判定肯定是错的,我们可以这样做:用 $f[i][j][k]$ 表示 $i$ 是否能用 $2^k$ 步到达 $j$,能到达为 $1$, 不能到达为 $0$, 跑一遍$floyd$来传递,将能用 $2^k$ 步到达的两点间边权设为 $1$,最后跑一遍最短路即可 代码 阅读全文
posted @ 2018-11-03 15:10 alecli 阅读(74) 评论(0) 推荐(0) 编辑