10 2020 档案

摘要:题目描述 样例 样例输入 8 5 BBWWWBBW 1 2 2 3 4 5 6 7 7 8 样例输出 84 2 1 4 样例解释 分析 首先,我们要预处理出一个点到该联通块内所有点的距离之和 \(f\) 这个东西用换根 \(DP\) 搞一下就可以了 那么这个联通块内所有点对的距离之和就是这个联通块所 阅读全文
posted @ 2020-10-30 19:29 liuchanglc 阅读(133) 评论(1) 推荐(1)
摘要:题目描述 分析 代码 #include<cstdio> #define rg register inline int read(){ rg int x=0,fh=1; rg char ch=getchar(); while(ch<'0' || ch>'9'){ if(ch=='-') fh=-1; 阅读全文
posted @ 2020-10-29 11:32 liuchanglc 阅读(195) 评论(0) 推荐(1)
摘要:题目描述 分析 设$f[i]$ 为从 \(i\) 走到 \(i+1\) 的步数 初始值 \(f[i]=2\) 则 \(f[i]=\sum_{i=p[i]}^{i}f[i]\) 考试的时候用树状数组维护的前缀和 其实这东西也可以拿一个数组记录 代码 #include<cstdio> #include< 阅读全文
posted @ 2020-10-29 11:26 liuchanglc 阅读(101) 评论(1) 推荐(1)
摘要:题目描述 分析 考虑自底向上贪心 \(f[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的需要灭火器的房间数,\(g[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的多余灭火器数 每个灭火器和房间的匹配在 \(lca\) 处处理 每次假设子树里已经最优了,那么 \(f[x][ 阅读全文
posted @ 2020-10-29 11:19 liuchanglc 阅读(65) 评论(0) 推荐(0)
摘要:题目描述 分析 看到 \(k \leq 10\) 和有关奇偶的问题就应该联想到状压 \(DP\) 我们用状态 $0$ 表示表示到当前的点有偶数条路径,用 $1$ 表示到当前的点有奇数条路径 对于每一层的点,我们存储正向和反向时该点能到达的点的集合 然后分两种情况转移即可 时间复杂度 \(O(mk \ 阅读全文
posted @ 2020-10-29 11:13 liuchanglc 阅读(106) 评论(1) 推荐(0)
摘要:题目描述 \(EZ\) 每周一都要举行升旗仪式,国旗班会站成一整列整齐地向前行进。 郭神摄像师想要选取其中一段照下来。他想让这一段中每个人的身高成等比数列,展示出最萌身高差。但他发现这个太难办到了。于是他决定放低要求,让等比数列的每两项之间可以是不连续的(例如:$2$, $4$, $16$, …)。 阅读全文
posted @ 2020-10-29 11:06 liuchanglc 阅读(143) 评论(0) 推荐(0)
摘要:题目描述 分析 这道题比较关键的一点就是要看出最终牌数的种类数不会超过 \(\sqrt{n}\) 种 知道了这个性质我们就可以用 \(vector\) 维护一个有序的序列 \(vector\) 中存放牌数的大小和有多少堆这样的牌 每次二分插入和删除即可 时间复杂度 \(O(m\sqrt{n})\) 阅读全文
posted @ 2020-10-29 06:21 liuchanglc 阅读(146) 评论(0) 推荐(1)
摘要:题目描述 分析 最后判断时,我们把所有 \(k\) 相等的说第一类话的人放在一个集合 判断这些人说真话时得到的结果是否等于 \(k\) 即可,此时另外的人一定都说假话 代码 #include<cstdio> #include<cmath> #include<algorithm> #include<v 阅读全文
posted @ 2020-10-26 17:34 liuchanglc 阅读(111) 评论(0) 推荐(0)
摘要:题目描述 分析 以所有特殊点为起点跑多源最短路,并且记录每个点是由哪个源点拓展的。 然后枚举所有边,如果边的两端是由不同源点拓展的,就更新这两个点的答案。 不难证明,对于源点 \(i\),由 \(i\) 拓展的点 \(j\) 以及与 \(j\) 相邻且不由 \(i\) 拓展的点 \(k\), 如果 阅读全文
posted @ 2020-10-26 17:26 liuchanglc 阅读(117) 评论(0) 推荐(0)
摘要:题目描述 分析 因为跨过最大值的区间一定是合法的,所以我们人为地把最大值放在最左边 我们要统计的就是在最大值右边单调不降的序列,可以用单调栈维护 需要特殊处理相同的情况 代码 #include<cstdio> #include<cstring> #include<cmath> #include<al 阅读全文
posted @ 2020-10-26 17:15 liuchanglc 阅读(123) 评论(1) 推荐(0)
摘要:题目描述 分析 有一个结论:在一个有 $m$条边的图中,三元环的个数为$O(m^{1.5})$的。 显然一个点数为$O(m^{0.5})$的完全图可以使得三元环个数取到这个上界,但是这是对边 的利用率最高的一种做法,你无法找到一个利用率更高的图。 本题要找的东西实际上就是由三个点两条边组成的链除去三 阅读全文
posted @ 2020-10-26 17:07 liuchanglc 阅读(112) 评论(0) 推荐(0)
摘要:题目描述 分析 暴力的思想是把 \(2^n\) 种得分枚举出来,每一种得分的概率都是相同的,然后从小到大累加,直到大于等于所给的概率 把问题转化一下,就变成了在 \(2^n\) 种元素中求 \(k\) 小值 \(n\) 的范围是 \(40\), \(2^{40}\) 不可过,但是 $2^{20}$可 阅读全文
posted @ 2020-10-26 16:43 liuchanglc 阅读(96) 评论(0) 推荐(0)
摘要:题目描述 分析 \(\sum_{i=0}^p[(p|qi)?0:1]=\sum_{i=0}^p[(p/gcd(p,q)|qi/gcd(p,q))?0:1]=\sum_{i=0}^p[(p/gcd(p,q)|i)?0:1]=p-p/gcd(p,q)\) 代码 #include<cstdio> long 阅读全文
posted @ 2020-10-25 12:09 liuchanglc 阅读(66) 评论(0) 推荐(0)
摘要:题目描述 分析 首先,容易发现一个小组内的最优配对方式(能得到最大综合实力的方式) 一定是实力值最大的男生和最大的女生配对,次大的和次大的配对,以此类推. 但是每次新插入一个值时,需要用 \(nlogn\) 的时间复杂度去维护这个最大实力值 如果暴力去扩展时间效率是无法接受的 然后我们会发现答案具有 阅读全文
posted @ 2020-10-25 11:37 liuchanglc 阅读(127) 评论(0) 推荐(0)
摘要:对于斜率优化DP的一些总结 阅读全文
posted @ 2020-10-22 21:12 liuchanglc 阅读(544) 评论(4) 推荐(0)
摘要:题目描述 题目传送门 分析 存一下板子,注意线段树维护的是左闭右开的区间 代码 #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #define rg register inline int read(){ 阅读全文
posted @ 2020-10-22 17:50 liuchanglc 阅读(119) 评论(0) 推荐(0)
摘要:容斥原理学习笔记 阅读全文
posted @ 2020-10-22 17:16 liuchanglc 阅读(572) 评论(2) 推荐(0)
摘要:题目描述 \(duyege\) 的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹。 为了查出真相,\(duyege\) 准备修好电脑之后再进行一次金坷垃的模拟实验。 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 $v_i$的金坷垃 或者除掉最新$v_i$ 层(不是量)撒的金坷垃。如果上面只留 阅读全文
posted @ 2020-10-22 10:56 liuchanglc 阅读(157) 评论(0) 推荐(0)
摘要:题目描述 分析 一条边只会在枚举它因子作为答案时才有用 所以,我们考虑从 $1$ 到最大值枚举答案 \(w\),把所有倍数是 \(w\) 的边连起来 在形成的森林中跑一个直径 这样相当于把每条边分成因子个数条边 注意,你不能一开始就建好图然后在枚举时打标记,这样你走的边会变多 时间复杂度 \(O(n 阅读全文
posted @ 2020-10-22 10:43 liuchanglc 阅读(114) 评论(0) 推荐(0)
摘要:题目描述 分析 这一道题和小凯的疑惑那一道题比较像 对于两个数 \(a,b\),如果 \(gcd(a,b)=1\) ,那么它们不能表示的最大的数是 \(a \times b -a -b\) 对于大于 \(a \times b -a -b\) 的数,都可以表示出来 那么我们现在的问题就是求出小于等于 阅读全文
posted @ 2020-10-22 10:32 liuchanglc 阅读(121) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-10-22 09:15 liuchanglc 阅读(0) 评论(0) 推荐(0)
摘要:题目描述 给定一个含有 \(n\) 个数的序列 \(a[1],a[2],a[3]……a[n]\),程序必须回答这样的询问:对于给定的$i,j,k$,在$a[i],a[i+1],a[i+2]……a[j]$中第$k$小的数是多少$(1≤k≤j-i+1)$,并且,你可以改变一些$a[i]$的值,改变后,程 阅读全文
posted @ 2020-10-20 17:57 liuchanglc 阅读(101) 评论(1) 推荐(0)
摘要:题目描述 题目传送门 分析 为了保证字典序最小,我们需要倒序枚举 对于 \(K=1\) 的情况,如果我们当前扫到的值与之前的某个值之和恰好是平方数,那么就要再开一个组 对于 \(k=2\) 的情况,我们把不合法的权值两两连边 那么出现冲突的情况就是整张图不是二分图,也就是说出现了奇环 这个我们用带权 阅读全文
posted @ 2020-10-19 19:07 liuchanglc 阅读(91) 评论(0) 推荐(0)
摘要:题目描述 分析 因为一个节点被放了小球后,它的所有祖先节点都要放小球 所以我们可以在递归的时候再把儿子的贡献上传 对于没有小桶限制的情况,显然是一个 \(dsu\) 的板子 对于有小桶限制的情况,关键是怎么处理重复的颜色 我们可以开一个数组记录一下当前颜色最早出现在哪一次操作中 统计当前颜色答案的时 阅读全文
posted @ 2020-10-19 15:45 liuchanglc 阅读(120) 评论(2) 推荐(1)
摘要:题目描述 分析 对于 \(Subtask\ 1\),可以写一个 \(n^3\) 的 \(DP\),\(f[i][j]\) 代表第 \(i\) 个建筑高度为 \(j\) 时的最小花费,随便转移即可 时间复杂度 \(O(n \times h^2)\) 对于 \(Subtask\ 2\),我们沿用 $Su 阅读全文
posted @ 2020-10-17 12:00 liuchanglc 阅读(188) 评论(1) 推荐(0)
摘要:题目描述 分析 考虑离线处理之后建树 如果 \(a_1,a_2,...,a_k\) 的交是 \(b\) 那我们从 \(b\) 到 \(a_1,a_2,...,a_k\) 建一条边权为 $0$ 的边 同样地,如果 \(a_1,a_2,...,a_k\) 的并是 \(b\) 那我们从 \(b\) 到 \ 阅读全文
posted @ 2020-10-17 11:24 liuchanglc 阅读(129) 评论(0) 推荐(0)
摘要:题目描述 分析 我们要找的是一段区间的和减去该区间的最大值能否被 \(k\) 整除 那么对于一段区间,我们可以先找出区间中的最大值 然后枚举最大值左边的后缀与最大值右边的前缀之和是否能被 \(k\) 整除 显然暴力枚举肯定会超时 所以我们可以用启发式合并的思想,只枚举长度较小的那一半,而在某种数据结 阅读全文
posted @ 2020-10-17 11:08 liuchanglc 阅读(101) 评论(0) 推荐(1)
摘要:题目描述 墨墨购买了一套$N$支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会向你发布如下指令: $1$、 \(Q\) \(L\) $R$代表询问你从第$L$支画笔到第$R$支画笔中共有几种不同颜色的画笔。 $2$、 \(R\) \(P\) \(Col\) 把第$P$支画笔 阅读全文
posted @ 2020-10-12 20:27 liuchanglc 阅读(123) 评论(1) 推荐(0)
摘要:什么是FHQ-Treap \(Treap\),一种数据结构,支持插入节点、删除节点、求第$k$大的节点、求权值为$k$的节点的排名、求权值比$k$小的最大节点、求权值比$k$大的最小节点 \(Treap=Tree+heap\) 其核心思想在于在权值上维护一棵二叉查找树,在优先级上维护一个堆 有旋$T 阅读全文
posted @ 2020-10-12 15:32 liuchanglc 阅读(277) 评论(2) 推荐(0)
摘要:题目描述 分析 我们会发现对于原材料,它既没有购买数量的限制,也没有存储数量的限制 那么我们就可以直接预处理出每一个月购买一个原材料的最小花费 对于电脑,我们可以开一个 \(set\) 把每一天生产电脑的花费和能够生产电脑的数量依次扔进去 每过一天,我们就给 \(set\) 里的元素整体加上当天存储 阅读全文
posted @ 2020-10-12 09:25 liuchanglc 阅读(91) 评论(0) 推荐(0)
摘要:题目描述 这题太虎了,所以没有背景。 给你一棵树,边有黑白两种颜色,你每次可以选择两个点,把这两个点之间的唯一简单路径上的所有边颜色取反,某些边要求最终颜色必须是黑色,还有些边没有要求,问最少操作多少次能达到目的 输入格式 第一行一个整数 \(n\),代表点数 接下来$n-1$行,每行三个数$x,y 阅读全文
posted @ 2020-10-12 09:09 liuchanglc 阅读(103) 评论(0) 推荐(1)
摘要:题目描述 分析 \(n^2\) 的 \(dp\) 应该比较好想 设 \(f[i][j]\) 为当前在第 \(i\) 天剩余的货物数量为 \(j\) 时的最大收益 那么它可以由 \(f[i-1][j]\),$f[i-1][j+1]$和$f[i-1][j-1]$ 转移过来 用滚动数组能压掉一维 正解类似 阅读全文
posted @ 2020-10-12 08:40 liuchanglc 阅读(88) 评论(1) 推荐(0)
摘要:题目描述 方伯伯有一天去参加一个商场举办的游戏。商场派了一些工作人员排成一行。每个人面前有几堆石子。 说来也巧,位置在 \(i\) 的人面前的第 \(j\) 堆的石子的数量,刚好是 \(i\) 写成 \(K\) 进制后的第 \(j\) 位。现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 \(L,R\ 阅读全文
posted @ 2020-10-11 09:06 liuchanglc 阅读(123) 评论(0) 推荐(1)
摘要:题目描述 题目传送门 分析 因为小 \(D\) 打出的牌与小 \(C\) 打出的牌花色必须相同,所以我们需要按照花色分类讨论 对于某一种花色 如果小 \(C\) 没有这种花色的牌但是小 \(D\) 有,那么小 \(D\) 的牌一定打不出去,直接 \(continue\) 掉 如果小 \(C\) 有这 阅读全文
posted @ 2020-10-11 08:05 liuchanglc 阅读(166) 评论(2) 推荐(2)
摘要:Linux下对拍代码 阅读全文
posted @ 2020-10-10 10:50 liuchanglc 阅读(435) 评论(0) 推荐(1)
摘要:题目描述 传送门 分析 一道贪心题 首先我们可以证明最优的贡献一定是从下依次合并到上的 不会出现一个节点不能合并到父亲节点,却能合并到父亲节点的祖先节点的情况 我们设当前的节点为 \(u\),\(u\) 的父亲节点为 \(v\),\(v\) 的父亲节点是 \(fa\) 如果 \(u\) 不能合并到 阅读全文
posted @ 2020-10-09 21:18 liuchanglc 阅读(120) 评论(0) 推荐(1)
摘要:题目描述 分析 对于 $20%$ 的数据,我们随便写个搜索就可以了 对于 $100%$ 的数据,建图的方式很神奇 我们从一张卡牌背面的数字向其正面的数字连边 这样问题就转化为了翻转最少的边,使得所有点的入度不超过一 为了方便处理,我们从正面向反面建一条权值为一的边,从反面向正面建一条权值为零的边 这 阅读全文
posted @ 2020-10-09 18:03 liuchanglc 阅读(216) 评论(1) 推荐(2)
摘要:题目描述 分析 思想很巧妙 对于一个甜甜圈,我们维护它的加工顺序的哈希值 在所有的操作都结束后 我们判断该哈希值是否和 \(1,2,...k\) 的哈希值相等即可 代码 #include<cstdio> #define rg register #define ull unsigned long lo 阅读全文
posted @ 2020-10-08 17:08 liuchanglc 阅读(135) 评论(0) 推荐(0)
摘要:题目描述 一棵根为$1$ 的树,每条边上有一个字符($a-v$共$22$种)。 一条简单路径被称为$Dokhtar-kosh$当且仅当路径上的字符经过重新排序后可以变成一个回文串。 求每个子树中最长的$Dokhtar-kosh$路径的长度。 输入输出样例 输入 #1 4 1 s 2 a 3 s 输出 阅读全文
posted @ 2020-10-08 16:59 liuchanglc 阅读(169) 评论(0) 推荐(0)
摘要:题意描述 总共有 \(n\) 个节点,\(m\) 条路径,要求其中 \(m-2\) 条路径走两遍,剩下 $2$ 条路径仅走一遍,问不同的路径总数有多少,如果仅走一遍的两条边不同则将这两条路径视为不同。 输入输出样例 输入 #1 5 4 1 2 1 3 1 4 1 5 输出 #1 6 输入 #2 5 阅读全文
posted @ 2020-10-07 16:14 liuchanglc 阅读(168) 评论(0) 推荐(0)
摘要:题目描述 分析 方法一(线段树) 线段树维护的是以当前节点为左端点的区间的贡献 而区间的右端点则会从 $1$ 到 \(n\) 逐渐右移 当我们把右端点从 \(i-1\) 的位置扩展到 \(i\) 的位置时 如果原先区间的最近公共祖先到根节点的路径中经过 \(a[i-1]\) 和 \(a[i]\) 的 阅读全文
posted @ 2020-10-07 15:12 liuchanglc 阅读(160) 评论(0) 推荐(0)
摘要:题目描述 单车联通大街小巷.这就是出题人没有写题目背景的原因. 对于一棵树,认为每条边长度为 $1$,每个点有一个权值$a[i]$.$dis(u,v)$为点$u$到$v$的最短路径的边数.\(dis(u,u)=0\).对每个点求出一个重要程度.点$x$的重要程度$b[x]$定义为其他点到这个点的距离 阅读全文
posted @ 2020-10-07 14:23 liuchanglc 阅读(195) 评论(0) 推荐(1)
摘要:题目描述 给出一个数 \(n\),你需要将 \(n\) 写成若干个数的和,其中每个数的十进制表示中仅包含$0$和$1$。 问最少需要多少个数 输入输出格式 输入格式: 一行 一个数 \(n(1≤n≤10^6)\) 输出格式: 最少的数的个数,并给出一种方案。 输入输出样例 输入 #1 9 输出 #1 阅读全文
posted @ 2020-10-07 07:16 liuchanglc 阅读(255) 评论(3) 推荐(1)
摘要:题目描述 有一棵 \(n\) 个结点的以 $1$ 号结点为根的有根树。 每个结点都有一个颜色,颜色是以编号表示的, \(i\) 号结点的颜色编号为 $c_i$​。 如果一种颜色在以 \(x\) 为根的子树内出现次数最多,称其在以 \(x\) 为根的子树中占主导地位。显然,同一子树中可能有多种颜色占主 阅读全文
posted @ 2020-10-06 21:39 liuchanglc 阅读(137) 评论(0) 推荐(0)
摘要:题目描述 分析 \(m=0\) 是显然的换根 \(dp\) 当 \(m\) 不为$0$,沿用换根$dp$思路 m的范围很小,加上异或是位运算 先任选一个根,$dfs$求出 到每个点的距离之和 和 距离最后四位为$0 \sim 15$的方案数 与$m=0$时差不多,随便搞一下就能写出换根的变化量 代码 阅读全文
posted @ 2020-10-05 16:57 liuchanglc 阅读(143) 评论(0) 推荐(0)
摘要:题目描述 分析 $50$ 分的 \(n^2DP\) 比较好想 设 \(f[i]\) 为在 \(i\) 处下车的最小花费,\(sum[i]\) 为 \(a[i]\) 的前缀和 则 \(f[i]=min(f[i],f[j]+max(b[j],s[i]-s[j]))\) 考虑如何优化 代码 #includ 阅读全文
posted @ 2020-10-05 16:53 liuchanglc 阅读(104) 评论(0) 推荐(0)
摘要:题目描述 分析 一个序列是等差数列且公差不为1的条件就是各项差的绝对值的$gcd!=1$ 从前往后依次扫即可 一定要判重 代码 #include<cstdio> #include<algorithm> #include<iostream> #include<cmath> #include<map> 阅读全文
posted @ 2020-10-05 16:48 liuchanglc 阅读(311) 评论(0) 推荐(0)
摘要:题目描述 分析 首先可以证明,肯定存在合法的方案 那么就有一个 $60$ 分的 \(n\times q\) 的做法 对于每一次询问,我们对整棵树进行一次 \(dfs\) 如果当前子树中有奇数个点被选择,那么我们保留一个点,把剩下的点两两配对 如果有偶数个点被选择,那么我们直接把它们都配对即可 对与另 阅读全文
posted @ 2020-10-05 16:42 liuchanglc 阅读(130) 评论(0) 推荐(0)
摘要:题目描述 分析 一道思维题 显然,\((a+b+c)/3\) 是答案的一个上界,$a+b+c-max(a,b,c)$也是答案的一个上 界,下面大致证明 $min((a+b+c)/3,a+b+c-max(a,b,c))$即为答案: 1、当$(a+b+c)/3 ⇐ a+b+c-max(a,b,c)$时, 阅读全文
posted @ 2020-10-05 16:30 liuchanglc 阅读(107) 评论(0) 推荐(0)
摘要:题目描述 分析 对于测试点$1$、$2$,直接搜索即可 对于测试点$3 \sim 6$,树退化成一条链,我们可以将其看成序列上的染色问题,用线段树维护颜色相同的最长序列 对于测试点$7$、$8$,肯定是车的速度越大能经过的道路越少,所以我们用类似并查集的方法从大到小依次维护联通块的直径,这里要用到一 阅读全文
posted @ 2020-10-05 16:02 liuchanglc 阅读(171) 评论(0) 推荐(0)
摘要:总结 概率题一般正着推 期望题一般倒着推 图上的问题如果是 \(DAG\) 可以直接转移 否则可能要用到高斯消元 \(20\) 的数据范围大概率是装压 有些看似无限循环的式子其实可以倒着递推 1、骰子基础版 题目描述 众所周知,骰子是一个六面分别刻有一到六点的立方体,每次投掷骰子,从理论上讲得到一点 阅读全文
posted @ 2020-10-02 17:46 liuchanglc 阅读(703) 评论(2) 推荐(0)