随笔分类 - 贪心
摘要:传送门 语文题,要读懂题意... 题目中的双亲节点就是父节点的意思 部门的意思是有边直接相连的子图 求的是 最大的部门节点子集 ,意思是对于所有部门,在所有部门选出一些子集,使得子集并起来后的大小最大,并且并起来的子集中的节点满足对于任意祖先后代节点,祖先的节点值小于等于后代的节点值 题面好像没有保
阅读全文
摘要:传送门 考虑一个子树里是怎么划分的,维护划分出来的每个集合的最大值,这个可以用一个 $multiset$ 维护 设 $S[x]$ 表示节点 $x$ 的子树中,最优划分 划分出来的每个块的节点最大值 首先叶子节点的集合显然只有它本身 然后考虑子树之间的合并,设两个子树根节点为 $x,y$,因为两个子树
阅读全文
摘要:传送门 考虑维护前缀和 $sum[i]$ 那么对于每一个位置 $i$ ,左端点为 $i$ 右端点在 $[i+L-1,i+R-1]$ 区间的区间最大值容易维护 维护三元组 $(o,l,r)$ ,表示左端点为 $o$ ,右端点 $\in [l,r]$ 的区间最大值,然后把它扔到一个堆里,每次弹出最大值计
阅读全文
摘要:传送门 把时间看成数,菜肴看成位置 考虑一个位置填什么数很麻烦 考虑一个数放在什么位置 一开始我想的是,对于一个限制 $(a,b)$ ,从 $a$ 往 $b$ 连一条边,然后如果有解则所有的限制构成了一个 $DAG$ 考虑当前最小的数给谁,显然是当前没有入度的且编号最小的点 所以可以直接按拓扑序把数
阅读全文
摘要:传送门 显然不能直接考虑图长什么样 考虑如何构造一个图,让一个 $B$ 序列尽可能合法 发现对于一些点,如果能让它们先弱联通,(一个节点指向下一个节点,形成一条链) 那么对于最后一个节点,它想缩几个联通块都行,可以证明,这样可以包括所有其他情况形成的 $B$ 序列 感性理解因为这样可以消耗最少的边来
阅读全文
摘要:传送门 A.The Doors 看懂题目就会写的题 给一个 $01$ 序列,找到最早的位置使得 $0$ 或 $1$ 已经全部出现 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cm
阅读全文
摘要:传送门 看到最短容易想到二分答案,然后发现尺取法还更好搞 动态维护左右端点 $l,r$,维护 $p[i]$ 表示颜色 $i$ 最后一次出现的位置,$cnt$ 维护当前有几种不同颜色 随着 $l$ 增大,显然它的最小的 $r$ 是不降的,所以枚举 $l$,动态右移 $r$ ,维护 $p$ 并维护 $c
阅读全文
摘要:传送门 原题传送门... 考虑从后往前推 对于一个序列,记 $M$ 为 $1$, $F$ 为 $-1$ 考虑这个序列的后缀和: F F F M M M M M F F 0 1 2 3 2 1 0 -1 -2 -1 可以发现如果某个时刻后缀和大于 $1$ 了,那么序列就不合法 反之序列一定合法,证明
阅读全文
摘要:传送门 考虑贪心,显然只要考虑相邻的数异或后的大小关系 对于数 $A[i],A[i+1]$,要保证它们之间的大小关系,显然要且仅要考虑它们最高的相异位 如果 $A[i]$ 最高相异位为 $0$,那么 $ans$ 此位必须为 $0$ 反之 $ans$ 此位必须为 $1$ 然后随便维护一下就好了,注意特
阅读全文
摘要:传送门 考虑前缀异或和 $b[i]$ 如果知道每个 $b[i]$ 就相当于知道所有数 初始知道 $b[0]$,每次操作 $l,r$ 就是求出 $b[l-1]\ xor\ b[r]$ 考虑转化成图论模型,把 $b[i]$ 看成点(包括 $b[0]$),每次操作相当于把两个点 $b[l-1],b[r]$
阅读全文
摘要:传送门 先考虑是一颗树的情况 求最小的 dfs 序 显然按儿子编号从小到大dfs 如果有多一条边怎么办 显然会有一条边不用走 直接枚举删那条边然后每次都暴力 dfs 复杂度 $O(n^2)$ 注意每个节点的儿子顺序先预处理好 不要每次都重新算
阅读全文
摘要:传送门 考场上把暴力都打满了,结果文件输入输出写错了.... 当时时间很充裕,如果认真想想正解是可以想出来的.. 问你 长度最小的赛道长度的最大值 显然二分答案 考虑如何判断是否可行 显然对于一个节点,它最多只能向父亲传一条路径长度 那么其它路径的合并只能在子树间进行 贪心一波,如果一段路径在子树就
阅读全文
摘要:传送门 BFS解法 显然如果一个面额A可以被其他面额表示出来 那么这个面额A就没用了 且如果A不能被其他面额表示,那么A一定有用(A本身的值只有自己可以表示) 发现面额最大不超过 25000 那么设 p [ i ] 表示面额 i 能否被其他面额表示 然后跑BFS求 p 就好了 注意初始状态是每两个数
阅读全文
摘要:传送门 NOIP2013原题 貌似官方数据都是一模一样的 以前写过竟然毫无印象? 考场上自己瞎JB推结论 显然,如果连续的两端区间可以左边区间减 k 次,右边区间也减 k 次 那么把两个区间合并起来一起减 k 次一定是更优的 所以先考虑把整个区间拿来减几次,显然最多减的次数就是整个区间的最小值 然后
阅读全文
摘要:传送门 考虑最上面每个位置的数对答案的贡献 然后就很容易发现: 如果有n层,位置 i 的数对答案的贡献就是C( n-1,i ) 然后就有很显然的贪心做法: 越大的数放越中间,这样它的贡献就会尽可能的大 然后考虑算C( i,j ) 因为n很大,模数很小 所以要用lucas定理求C C(n,m)= C(
阅读全文
摘要:传送门 枚举右端点 可以发现左右端点中有一个合法的咖啡店就可以了 而且为了让合法的左端点尽量多 咖啡店要尽量靠右 所以可以记录目前最右边的合法咖啡店左边每种颜色的客栈的个数 cnt[ color ] 然后如果更右边有合法的咖啡店,就更新一波 cnt 累计所有右端点的情况 复杂度 O(nk) #inc
阅读全文
摘要:权限题... 描述: Description 母亲节就要到了,小 H 准备送给她一个特殊的项链。这个项链可以看作一个用小写字 母组成的字符串,每个小写字母表示一种颜色。为了制作这个项链,小 H 购买了两个机器。第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有
阅读全文
摘要:传送门 从 i 到 n 的异或和 = 从 1 到 n 的异或和 异或 从 1 到 i-1 的异或和 所以只要存 1 到 i-1 的异或和就行了 开一个可持久化字典树 从高位到低位,存每个从 1 ~ i 的异或和 询问 i 到 n 异或 x 就相当于询问 (1到n 的异或和 异或 x )再异或 1到
阅读全文
摘要:传送门 贪心+字典树 很显然,填一个单词前肯定要优先把所有是它后缀的单词填掉 考虑怎么判后缀 可以把单词倒过来,加入字典树 那么填一个单词前要先填掉它所有祖先的单词 即要从深度小的填到深度大的 可以按搜索顺序填 考虑要怎样确定搜索顺序 随便画一颗树 发现深度优先比广度优先更优 在深度优先时 单词少的
阅读全文
摘要:传送门 首先只有一列下去 那肯定DP啦 然后想DP的时候发现 如果知道了第 1 个的状态 那么第 2 个的状态就可以从右边一列的第 1 个数推出来 然后知道了前面 2 个状态,第 3 个状态就可以从右边第 2 个数推出来 然后一直推下去 然后就全部出来了 根本就只有两种可能好吧!(第一个为雷 or
阅读全文