cunzai_zsy0531

关注我
上一页 1 2 3 4 5 6 ··· 15 下一页
摘要: 首先考虑建出 dfs 树,如果一个点的深度 \(\geq \frac{n}{k}\),那么直接输出这个点到根的路径即可。 如果没有点深度 \(\geq \frac{n}{k}\),可以证明这棵树一定有不少于 \(k\) 个叶子(考虑反证法,如果叶子个数少于 \(k\),那么点数最多也不到 \(k\c 阅读全文
posted @ 2022-05-30 11:19 cunzai_zsy0531 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 考虑问两次,一次 \([1,n]\),一次 \([2,n]\),能够得到什么信息:长度为 \(1\) 的串,第一次询问多出来的串就是 \(s_1\);同理,长度为 \(2\) 的串多出来的两个字符,去掉 \(s_1\) 就是 \(s_2\);依此类推之后,发现可以直接求出所有位置的字符,并且字串总长 阅读全文
posted @ 2022-05-30 11:18 cunzai_zsy0531 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 首先考虑枚举矩形较小的边,这样每种数选的个数就是确定的了,用它去更新答案。考虑现在已经知道了答案矩形的两边长,那么如何构造出这个矩形:出现次数从大到小往里放,每次沿着一个斜线放下去,如果顶到了边界就换到下一个斜线,这样一定不会出现一个元素出现在同一行或同一列。 点击查看代码 const int N= 阅读全文
posted @ 2022-05-30 09:18 cunzai_zsy0531 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 考虑根号分治。设 \(m=\sum k_i\),则把 \(k>\sqrt m\) 的称为大集合,\(k\leq \sqrt m\) 的称为小集合。 对于小集合与小集合: 暴力枚举每个集合的每一对 \((x,y)\),开一个哈希表维护有没有其他的集合也存在这个数对。由于集合大小不超过 \(\sqrt 阅读全文
posted @ 2022-05-28 16:26 cunzai_zsy0531 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 首先可以写出这样一个方程 \[ dp_i=\max_{j<i,a_j\leq a_i}\{dp_j+1+w(i,j)\} \] 其中,\(w(i,j)=0/1\) 表示 \([i+1,j-1]\) 有没有比 \(a_i\) 和 \(a_j\) 都大的数。 考虑维护每个点的 \(pre\) 表示 \( 阅读全文
posted @ 2022-05-28 16:21 cunzai_zsy0531 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 每次删数都会删恰好 \(k-1\) 个,所以删的数总个数必须是 \(k-1\) 的倍数。考虑最终状态,如果所有数左边不足 \(\frac{k-1}{2}\) 个删掉的数或右边不足 \(\frac{k-1}{2}\) 个删掉的数,那么最后一步是无法实现的。否则,实现了最后一步之后,就可以很轻松的实现前 阅读全文
posted @ 2022-05-28 16:19 cunzai_zsy0531 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 注意到只要两个人初始的朝向相反就可以看到对方,否则不行。直接把斜率搞成一个 pair 压到 map 里存个数就行了。 点击查看代码 #include<cstdio> #include<iostream> #include<map> #define mp std::make_pair typedef 阅读全文
posted @ 2022-05-28 16:17 cunzai_zsy0531 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 首先有一个结论,每个人向前走只会走 \(1\) 格,走更多不会更优。感觉应该是挺好证的。然后接下来就可以考虑 dp,设 \(dp_i\) 表示搞完了 \([1,i]\) 的所有 boss,现在在 \(i+1\) 位置的最小时间。有三种转移: 用手枪一个一个打小怪,用狙击枪打boss,走到下一关 用手 阅读全文
posted @ 2022-05-28 15:27 cunzai_zsy0531 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 考虑不论怎么样,每个子树里边最长的链都会接在别的链下面,因为如果这条链不动,让别的链接过来一定不优。所以就直接按这个排序然后输出 dfs 序就行了。具体证明我也不会,就是考场猜了个结论。 点击查看代码 const int N=1e5+13; int n,son[N],maxd[N],dfn[N],d 阅读全文
posted @ 2022-05-28 15:26 cunzai_zsy0531 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 一般这种 dp 的转移都是相邻格子之间的,但是这道题相邻格子之间转移没办法搞掉题目的这个限制。考虑每次转向的时候转移,这样对于某一个点,他能转移的一定是一个区间(不能到最后 \(cnt\) 个,那样就把石头推出去了)。暴力做是 \(O(n^3)\) 的,区间的这个可以前缀和优化,就 \(O(n^2) 阅读全文
posted @ 2022-05-28 15:23 cunzai_zsy0531 阅读(17) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 15 下一页