上一页 1 ··· 7 8 9 10 11 12 13 下一页
摘要: 五星压行大师 \(lyh\) 表示:这是难得能让他的代码长度打破百行大关的题目(182行)。 首先,根据科技与狠活,本题可以黑白染色。源点联向白格,黑格连向汇点。 发现每个格子都可以连向四个方向,所以可以建立四个点,代表水管连到了上下左右四个方向。 设四元组 \((x,y,z,p)\) 表示水管初始 阅读全文
posted @ 2024-06-08 09:15 长安一片月_22 阅读(34) 评论(0) 推荐(0)
摘要: 考试压轴题,意识到这题是线段树优化 \(dp\) 时追悔莫及。 为了简化题目,我将从起点到原点变成了从原点到起点(这样就可以省去两个数组的空间)。 想到设 \(dp_{i,j}\) 表示在第 \(i\) 层,奶牛们在 \(j\) 列时的最小移动范围,则转移方程为(设输入为 \(l,r\)): \[\ 阅读全文
posted @ 2024-06-04 20:56 长安一片月_22 阅读(22) 评论(0) 推荐(0)
摘要: 考虑将修车师傅放在一边,顾客放在一边。 对于第 \(i\) 辆车,让第 \(j\) 个修车师傅来修,放在了倒数第 \(l\) 个,那么他产生的贡献即为 \(t_{i,j}\times l\)。 我们可以将每个修车师傅拆成 \(n\) 个点,第 \(l\) 个点表示修车师傅的倒数第 \(l\) 个位置 阅读全文
posted @ 2024-05-19 11:51 长安一片月_22 阅读(21) 评论(0) 推荐(0)
摘要: 每个点拆成入点和出点。 发现每个点、每条边都只能经过一次,所以所有边的容量都是 \(1\)。 #include<bits/stdc++.h> #define ll long long using namespace std; const int N=405,M=1e5+5; int n,m,s,t, 阅读全文
posted @ 2024-05-19 11:00 长安一片月_22 阅读(15) 评论(0) 推荐(0)
摘要: 发现题目中描述的配对条件可以理解为:\(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 阅读(19) 评论(0) 推荐(0)
摘要: 发现可以做如下建图: 对于前两组输入,从 \(s\) 向所有代表学生的点连一条边,容量为其学习文科的喜悦值;从所有代表学生的点向 \(t\) 连一条边,容量为其学习理科的最大值。 对于后四组输入,建两个点 \(x,y\),从 \(s\) 向 \(x\),从 \(y\) 向 \(t\) 分别连容量为相 阅读全文
posted @ 2024-05-09 11:13 长安一片月_22 阅读(16) 评论(0) 推荐(0)
摘要: 假如将所有激光武器放在一边,所有机器人放在一边,激光武器向它可以伤害的机器人连边,再加超级源/汇点,这就是一个网络流问题。 考虑激光武器向机器人连的边容量无限,而机器人向超级汇点连的边容量为机器人的装甲值,而超级源点连向激光武器的边则是用时 \(\times\) 激光武器伤害。 发现假如答案为 \( 阅读全文
posted @ 2024-05-05 14:44 长安一片月_22 阅读(81) 评论(0) 推荐(0)
摘要: 发现实际上就是在求有多少只蜥蜴能逃出来。 发现可以将柱子拆成入点和出点两部分,自己的出点向别人的入点连边,自己的入点向自己的出点连边。最后再加一个超级源点 \(S\),连接所有有蜥蜴的柱子入点;再加一个超级汇点 \(T\),连接所有能够跳出地图的柱子。 我们猛然发现:这个问题不就是求最大流吗? 考虑 阅读全文
posted @ 2024-05-05 10:59 长安一片月_22 阅读(19) 评论(0) 推荐(0)
摘要: 俗话说的好,正难则反,既然不好想每一个子弹能打碎多少个木板,不如想每个木板被那枚子弹打碎。 然后就是显然的整体二分。由于可能木板不会被击碎,那些木板的分数会累加到最后一个子弹上,因此我们可以加一枚背锅弹,承担多余的分数。 时间复杂度 \(O((n+m)\log^2 m)\)。 #include<bi 阅读全文
posted @ 2024-05-04 10:51 长安一片月_22 阅读(15) 评论(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 阅读(25) 评论(0) 推荐(0)
摘要: 今天考的好一些。(244分,rk 2) T1 [CF1279C] Stack of Presents 显而易见,每次排序的时候肯定是把先取出来的排在前面,所以只需要维护一个指针 \(z\),表示目前最靠里的一个礼物,假如现在这个要取的礼物比它靠外,贡献为 1,否则它之前所有礼物都在它的外侧,计算出贡 阅读全文
posted @ 2024-05-03 20:03 长安一片月_22 阅读(33) 评论(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 阅读(15) 评论(0) 推荐(0)
摘要: 不愧是 \(ZJOI\),《最可做的一道题》都让人一头雾水…… 首先将问题转化到链上。 可以将总共的组数转化为每个点可以到达的城市。 明显给每个点建一棵动态开点线段树,维护可以和他通商的点。很明显,可以通商的点的标号连续的一段。我们可以将可以将每一次传播语言的工作当作区间修改,很明显可以用差分。最后 阅读全文
posted @ 2024-04-21 17:18 长安一片月_22 阅读(36) 评论(1) 推荐(0)
摘要: 发现可以直接建立虚树。 设 \(dp_{u,0/1/2}\) 表示第 \(u\) 个节点的子树内,所有选中节点到它的距离之和/选中节点中到它的最短距离/选中节点中到它的最长距离,\(as_{u,0/1/2}\) 则代表对于这个子树,题目所问问题的三个答案,\(i1,i2\) 分别为使 \(dp_{u 阅读全文
posted @ 2024-04-20 20:28 长安一片月_22 阅读(16) 评论(0) 推荐(0)
摘要: 基环树算法总结 一、什么是基环树 基环树,顾名思义,有两个要素:环和树。 因此,基环树就是一棵树的一个节点,扩成一个环,做题时,多棵基环树组成的基环树森林,常以如下方式出现: 每个点只有一个出边。 每个点只有一个入边。 图中一共有 \(n\) 个点,\(n\) 条边。 那么,基环树类型的题目应该怎么 阅读全文
posted @ 2024-04-20 11:23 长安一片月_22 阅读(44) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 13 下一页