摘要: 发现题目中描述的配对条件可以理解为:\(pc_i-pc_j=1\) 且 \(a_i\bmod a_j=0\),其中 \(pc_i\) 表示 \(a_i\) 的质因数个数。 自然想到以 \(pc\) 奇偶性建立二分图,可以配对的点间连一条边。 先不考虑费用,三种边为: \((s,i,b_i)\),其中 阅读全文
posted @ 2024-05-19 10:22 长安一片月_22 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 发现可以做如下建图: 对于前两组输入,从 \(s\) 向所有代表学生的点连一条边,容量为其学习文科的喜悦值;从所有代表学生的点向 \(t\) 连一条边,容量为其学习理科的最大值。 对于后四组输入,建两个点 \(x,y\),从 \(s\) 向 \(x\),从 \(y\) 向 \(t\) 分别连容量为相 阅读全文
posted @ 2024-05-09 11:13 长安一片月_22 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 假如将所有激光武器放在一边,所有机器人放在一边,激光武器向它可以伤害的机器人连边,再加超级源/汇点,这就是一个网络流问题。 考虑激光武器向机器人连的边容量无限,而机器人向超级汇点连的边容量为机器人的装甲值,而超级源点连向激光武器的边则是用时 \(\times\) 激光武器伤害。 发现假如答案为 \( 阅读全文
posted @ 2024-05-05 14:44 长安一片月_22 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 发现实际上就是在求有多少只蜥蜴能逃出来。 发现可以将柱子拆成入点和出点两部分,自己的出点向别人的入点连边,自己的入点向自己的出点连边。最后再加一个超级源点 \(S\),连接所有有蜥蜴的柱子入点;再加一个超级汇点 \(T\),连接所有能够跳出地图的柱子。 我们猛然发现:这个问题不就是求最大流吗? 考虑 阅读全文
posted @ 2024-05-05 10:59 长安一片月_22 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 俗话说的好,正难则反,既然不好想每一个子弹能打碎多少个木板,不如想每个木板被那枚子弹打碎。 然后就是显然的整体二分。由于可能木板不会被击碎,那些木板的分数会累加到最后一个子弹上,因此我们可以加一枚背锅弹,承担多余的分数。 时间复杂度 \(O((n+m)\log^2 m)\)。 #include<bi 阅读全文
posted @ 2024-05-04 10:51 长安一片月_22 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 发现实际上就是二维静态区间最大值,可以用整体二分维护。 时间复杂度 \(O((q+n^2)\log \max(a_{i,j})\log n^2)\)。 #include<bits/stdc++.h> #define ll long long using namespace std; const in 阅读全文
posted @ 2024-05-04 09:38 长安一片月_22 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 今天考的好一些。(244分,rk 2) T1 [CF1279C] Stack of Presents 显而易见,每次排序的时候肯定是把先取出来的排在前面,所以只需要维护一个指针 \(z\),表示目前最靠里的一个礼物,假如现在这个要取的礼物比它靠外,贡献为 1,否则它之前所有礼物都在它的外侧,计算出贡 阅读全文
posted @ 2024-05-03 20:02 长安一片月_22 阅读(15) 评论(0) 推荐(0) 编辑
摘要: T1 [NOIP2017 提高组] 时间复杂度 大模拟…… #include<bits/stdc++.h> #define ll long long using namespace std; int t,n,k,as,nw,tr,ed[105]; int c[26],str[105],b[105]; 阅读全文
posted @ 2024-05-02 20:54 长安一片月_22 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 不愧是 \(ZJOI\),《最可做的一道题》都让人一头雾水…… 首先将问题转化到链上。 可以将总共的组数转化为每个点可以到达的城市。 明显给每个点建一棵动态开点线段树,维护可以和他通商的点。很明显,可以通商的点的标号连续的一段。我们可以将可以将每一次传播语言的工作当作区间修改,很明显可以用差分。最后 阅读全文
posted @ 2024-04-21 17:18 长安一片月_22 阅读(14) 评论(1) 推荐(0) 编辑
摘要: 发现可以直接建立虚树。 设 \(dp_{u,0/1/2}\) 表示第 \(u\) 个节点的子树内,所有选中节点到它的距离之和/选中节点中到它的最短距离/选中节点中到它的最长距离,\(as_{u,0/1/2}\) 则代表对于这个子树,题目所问问题的三个答案,\(i1,i2\) 分别为使 \(dp_{u 阅读全文
posted @ 2024-04-20 20:28 长安一片月_22 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 基环树算法总结 一、什么是基环树 基环树,顾名思义,有两个要素:环和树。 因此,基环树就是一棵树的一个节点,扩成一个环,做题时,多棵基环树组成的基环树森林,常以如下方式出现: 每个点只有一个出边。 每个点只有一个入边。 图中一共有 \(n\) 个点,\(n\) 条边。 那么,基环树类型的题目应该怎么 阅读全文
posted @ 2024-04-20 11:23 长安一片月_22 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 基环内向树上 dp,不过在这里提供给一种非典型做法。 考虑将环上的每一条边都断开,这样就会形成多棵树,先在这些树上进行树形 \(dp\)。设 \(dp_{i,0/1}\) 表示不选/选 \(i\) 时,\(i\) 子树内的最大选点数。明显方程为: \[\begin{cases}dp_{u,0}=\s 阅读全文
posted @ 2024-04-20 10:20 长安一片月_22 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 众所周知,\(lyh\) 是一名压行大师,也是一名 \(juruo\),所以他将他繁琐的方法用 \(102\) 行表现了出来…… 明显原题为基环内向树森林。 首先用并查集计算连通块,不在一个连通块里的答案就是 \(-1\ -1\)。 发现实际上答案就是以环为根节点,求 \(lca\) 的结果,求完后 阅读全文
posted @ 2024-04-14 17:59 长安一片月_22 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 明显要以 \(1\) 为起点。 原图是树 这种情况下,走路不能回头,只能用 \(dfs\) 的思路走。当然肯定每次都走较小的那棵子树,\(vector\) 存图后排序即可达到这种效果。 时间复杂度 \(O(n\log m)\)。 原图是基环树 明显可以分别考虑将所有边断掉后的情况,取字典序最小的。 阅读全文
posted @ 2024-04-14 09:15 长安一片月_22 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 首先来考虑什么情况方案数为 \(0\): 可以确定,在某一层中,两个原本都能晋级的队伍比赛; 可以确定,在某一层中,两个原本都不能晋级的队伍比赛。 发现假如写出每一场比赛及其胜者,可以形成一棵树形结构,在里面打标记即可判断是否为 \(0\)。 我们设 \(a_i\) 表示第 \(i\) 层新加的队伍 阅读全文
posted @ 2024-04-13 08:56 长安一片月_22 阅读(3) 评论(0) 推荐(0) 编辑