随笔分类 -  题解

摘要:bfs。 思路 总体来说:暴力删边,暴力搜索。 删边 首先不难发现: (注意下面的图左上角的格子是 (1,1)(1,1)(1,1),左上角的顶点是 (0,0)(0,0)(0,0)) 切掉一条横向边相当于把这条线上面的点和下面的点的连接切断了。 具体来说,我们假设这条线段的横坐标为 xxx,纵坐标区间 阅读全文
posted @ 2024-07-29 22:29 Weslie_qwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要:Idea 看见 n≤200n\le200n≤200,果断采用 Floyd。 在 Floyd 的过程中,我们维护两个数值:从 iii 到 jjj 的最小丢包率,从 iii 到 jjj 的延时(注意不一定是最短的)。 题目要求丢包率优先,我们直接模拟即可。注意到在丢包率小的情况下延时不一定最小,所以延时 阅读全文
posted @ 2024-07-29 10:53 Weslie_qwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要:就我一个人写递归吗。 思路 打表 nnn 对应的答案 111 000 222 111 333 222 444 333 555 444 666 555 777 666 888 777 999 888 101010 999 111111 111111 121212 222222 131313 33333 阅读全文
posted @ 2024-07-22 19:17 Weslie_qwq 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题意简述 给你一个圆的半径 rrr 和圆上的 nnn 个点,然后任意选择三个点,会组成一个三角形。要输出所有符合要求的三角形面积之和。 思路 注意到是在圆上,因此任选三个点一定能组成三角形。 因为 n≤500n\le 500n≤500,所以考虑暴力枚举。 首先需要将极坐标转化为平面直角坐标,设极坐标 阅读全文
posted @ 2024-07-19 14:49 Weslie_qwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要:思路 显然对于一个地图,求最短路,要用 bfs。 根据本题的限制条件,模拟即可。 可以使用 777 个队列,分别记录横坐标、纵坐标、有无四种颜色的钥匙,步数。 代码细节比较多,具体看代码吧。 代码 #include<bits/stdc++.h> using namespace std; queue< 阅读全文
posted @ 2024-07-19 10:52 Weslie_qwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要:思路 我们可以令答案 b=cb=cb=c。 先判断无解: a<ca<ca<c 时,显然无解。 ⌊a⌊ac⌋⌋≠c\lfloor\dfrac{a}{\lfloor\frac{a}{c}\rfloor}\rfloor\neq c⌊⌊ca​⌋a​⌋=c 时,无解。 证明(口胡)一下下面的结论: ⌊ac⌋ 阅读全文
posted @ 2024-07-15 09:35 Weslie_qwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要:大家好,我是靳皓旭,没错,就是那个人见人爱,花见花开的靳皓旭。你是不是对即将到来的讲解十分期待与激动呢?我也是的。废话不多说,我们开始吧! 这次让我们迈出万里编程路的第 102151021510215 步,这是历史性的一步,更是意义深远的一步,上升到人民,社会,国家。。。。。。扯多了,让我们回到正题 阅读全文
posted @ 2024-07-14 16:33 Weslie_qwq 阅读(7) 评论(0) 推荐(0) 编辑
摘要:看到算法标签想出来的。 Idea 设 dpi,jdp_{i,j}dpi,j​ 表示当前枚举到了第 iii 位,子串化为十进制 对 ppp 取模的余数为 jjj 的子串数量。 设 sis_isi​ 对 ppp 取余的余数为 qqq。 设 j1j_1j1​ 为上一个枚举到的 jjj,j2j_2j2​ 为 阅读全文
posted @ 2024-06-29 11:26 Weslie_qwq 阅读(44) 评论(0) 推荐(0) 编辑
摘要:状压 dp 题。 思路 对于每个字符 sis_isi​: 如果 sis_isi​ 不为 A,那么它可以是 B。我们要把这个状态算进去。 如果 sis_isi​ 不为 B,那么它可以是 A。我们要把这个状态算进去。 令 dpi,jdp_{i,j}dpi,j​ 表示当前枚举到了第 iii 位,往前 kk 阅读全文
posted @ 2024-06-27 16:28 Weslie_qwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要:Idea 对于一个柱子无非只有两种情况: 它比之前每一个柱子高度低。 它是目前最高的。 如果比一个柱子高度低,由题意模拟,我们找到最靠右的比它高的柱子,把答案加上即可。 设那个找到的柱子坐标为 xxx,现在模拟到了 iii,则下一个答案答案应为:(i−x+1)hi+(ansi−1)+1=(i−x+1 阅读全文
posted @ 2024-06-25 14:24 Weslie_qwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要:双倍经验:P7840。 Idea 定义一个长度为 n−2n-2n−2 的序列叫 prufer 序列。 这个序列的求法是: 选择一个树上面的编号最小的叶子节点删除。 将这个节点所连的边的另一端的点加入到序列中。 显而易见的有一个结论:一个点的度数是它的编号在序列中的出现次数加 111。 为什么?因为这 阅读全文
posted @ 2024-06-25 13:59 Weslie_qwq 阅读(9) 评论(0) 推荐(0) 编辑
摘要:双倍经验:ABC359F。 Idea 定义一个长度为 n−2n-2n−2 的序列叫 prufer 序列。 这个序列的求法是: 选择一个树上面的编号最小的叶子节点删除。 将这个节点所连的边的另一端的点加入到序列中。 显而易见的有一个结论:一个点的度数是它的编号在序列中的出现次数加 111。 为什么?因 阅读全文
posted @ 2024-06-23 11:35 Weslie_qwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要:什么时候 ABC 也开始构造了…… Idea 先判断无解。 显然最少走 nnn 步才能到终点,最多途径 n×mn\times mn×m 个格子。 上图中红色为最短的路径,蓝色为稍微绕一点路的路径,不难看出,无论我们怎么绕,都得多走至少 222 个格子回到原来的最短路上。 红线是我们的最短路径,而蓝线 阅读全文
posted @ 2024-06-16 09:21 Weslie_qwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要:其实可以说是基环树? Idea 我们都知道,nnn 个点 n−1n-1n−1 条边的图是树。 那么在上面加一条边,它就会产生一个环。 如果我们把本题的图画一下: (这只是一种可能情况,不是样例。) 虽然这个图很复杂,但是它其实只由 222 部分组成: (下面这个图是将对应连通块重新整排之后得到的,点 阅读全文
posted @ 2024-06-10 09:55 Weslie_qwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要:思路 注意到数据范围:ai≤106a_i\le10^6ai​≤106,加之整除,因此考虑调和级数。 先对 aaa 排序。 我们可以在 [1,106][1,10^6][1,106] 区间内枚举 aia_iai​ 的值(注意是值)。当然也有一个小小的优化就是枚举到 ana_nan​。 然后枚举整除的商。 阅读全文
posted @ 2024-06-06 22:16 Weslie_qwq 阅读(6) 评论(0) 推荐(0) 编辑
摘要:字典树模板题。 Code 先贴上字典树板子的代码。 #include<bits/stdc++.h> using namespace std; int t,n,q,tree[3000010][71],cnt[3000010],c; char s[3000010]; int num(char x){ i 阅读全文
posted @ 2024-05-16 23:01 Weslie_qwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要:Idea 首先要跑出每一个数的位数。 接下来,我们枚举两个数中后面的数。但是我们不需要枚举前面的数。 考虑对于 aka_kak​,aka_kak​ 位数为 cnticnt_icnti​ 时 iii 的贡献: a1×cntk+ak+a2×cntk+ak+⋯+ak−1×cntk+ak+ak+1×cntk 阅读全文
posted @ 2024-05-16 22:45 Weslie_qwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要:Idea 因为 ai<108a_i<10^8ai​<108,所以 0<ai+aj<2×1080<a_i+a_j<2\times 10^80<ai​+aj​<2×108。 考虑对于 ai+aj<108a_i+a_j<10^8ai​+aj​<108 和 ai+aj≥108a_i+a_j\ge 10^8a 阅读全文
posted @ 2024-05-16 22:35 Weslie_qwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要:考虑暴力。 思路 预处理出每一个数的后继(即下一个出现的位置) nxt\texttt{nxt}nxt 数组。 对于每一个询问区间枚举,如果发现枚举的数的后继在区间内,那么就跳过这个区间。 可以这么理解:因为当你在后面枚举到它的后继的时候,你就要把它和它的后继之间的所有数全部拿走。拿走的部分不应统计出 阅读全文
posted @ 2024-05-15 23:17 Weslie_qwq 阅读(11) 评论(0) 推荐(0) 编辑
摘要:思路 考虑第一问(连通性),显然要使用并查集(下文的代码中使用了 bfs)。 但是我们显然不能将所有边都建出来。 因为只考虑连通性,所以只需保证一个集合内所选的边能保证所有点之间互相连通即可。 再考虑第二问(最小生成树)。 注意:下文中的 nnn 与原题中的 NNN 不是同一个意义,集合即顶点子集。 阅读全文
posted @ 2024-05-05 23:00 Weslie_qwq 阅读(4) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示