比赛题解
文章平均质量分 70
HeartFireY
可能是ACMer、JXNU计算机科学协会前会长
展开
-
2022-2023 ICPC Brazil Subregional Programming Contest VP记录
找连续且长度大于等于的子串长度和。直接记录加和即可。B.Fun with Stones数位DP,队友过的C.Cutting with Lasers模拟题,模拟区域裁剪。注意首先要把周边没有用的给裁掉。记vis[i][j]vis[i][j]vis[i][j]表示第(i,j)(i, j)(i,j)位置的方格是否已经被裁剪,然后遍历每个点,对没裁过的点扫描线算面积,最后取最大值即可。D.Displacing Particles队友猜了个结论过了E.Eliminating Ballons可以发现本质原创 2022-10-15 20:58:52 · 1821 阅读 · 0 评论 -
2022杭电多校 第6场 1008.Shinobu Loves Segment Tree 规律题
然后沿着树上路径(实际上对应数字的二进制位)向上走,然后减去当前节点对应该减的值。那么我们可以写成式子:假设加法序列长度为。)+(若干个相同数字),然后发现加。产生的加法序列的规律:(若干个。的次数与层节点个数有关。时也要特判避免溢出。种情况也要特判,避免溢出。发现每个节点的按顺序。的规律,对于当前节点。...............原创 2022-08-04 17:03:16 · 373 阅读 · 0 评论 -
2022“杭电杯”中国大学生算法设计超级联赛(5)1003.Slipper dijkstra
那么考虑跳操作的性质规律在跑最短路时,对于当前节点。,此时我们会将两个集合入队,这时是通过跳的操作入队。(同一操作执行若干次再次到达当前状态)。首先排除建满边的做法,空间复杂度肯定过不去。给定带边权树,经过边需要花费边权代价。此后我们会发现如果通过任意次操作,集合至多被入队一次,我们在跑。,设能够跳到的点集分别为。,我们可以维护一个表。...原创 2022-08-02 16:56:49 · 235 阅读 · 0 评论 -
CodeTon Round 2 D. Magical Array 规律
那么根据以上结论,可以找出被影响的数组及操作次数。次操作后因为受影响元素连续,因此前缀和元素受到。,但发现由于受影响的元素不连续,因此。操作,问哪个数组被执行了操作。只有一个数组被执行了若干次。发现前缀和数组总和不受影响。会受影响,但收到的影响在。发现前缀和数组总和被。...原创 2022-08-01 11:39:57 · 266 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营4 DHKLN
接下来讨论边长变化规律可以发现两次生成的边长关系可以由原体的内切球和生成体的外接球关系导出,因为这俩球是同一个球。玩家可以升级剑,每次升级相当于在当前攻击力后面添加一个数字,问最少需要几次升级。那么考虑求经过无限此碰撞后生成的新序列,容易发现因为或操作的性质,首先可以发现,任意两个元素相撞变化后,不会引起总和的变化,因此。的矩形,把这些矩形拼成一个大矩形,求大矩形的最小周长。次操作后生成的是否为正多面体,以及最终正多面体的边长。次操作,每次操作取正多面体几何中心连线生成新凸壳。若干次碰撞后,方差会收敛。..原创 2022-07-30 21:12:12 · 279 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营4 N.Particle Arts 规律 方差
那么考虑求经过无限此碰撞后生成的新序列,容易发现因为或操作的性质,首先可以发现,任意两个元素相撞变化后,不会引起总和的变化,因此。但可以直接怼上方差公式,但是又会爆。若干次碰撞后,方差会收敛。于是直接按位统计后生成新序列计算即可。,那么可以在运算过程中全部使用。相撞后会湮灭并产生两个新元素。,那么无限次或操作会将为。...原创 2022-07-30 18:04:35 · 204 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营3 ACFHJ
给出两棵编号1−n1-n1−n的树A,BA,BA,B,A,BA,BA,B树上每个节点均有一个权值,给出kkk个关键点的编号x1…xnx_1…x_nx1…xn,问有多少种方案使得去掉恰好一个关键点使得剩余关键点在树AAA上LCALCALCA的权值大于树BBB上LCALCALCA的权值。处理出所有关键节点的前缀LCALCALCA和后缀LCALCALCA,然后枚举所有的关键节点求LCALCALCA后CheckCheckCheck计数即可。C.Concatenation 签到?题目分析排序规则A+B...原创 2022-07-26 11:25:18 · 372 阅读 · 1 评论 -
“蔚来杯“2022牛客暑期多校训练营3 H.Hacker SAM+线段树/DP/分治(不带修查区间最大子段和)
给定母串以及若干子串,子串长度固定,每个位置都有一个权值,要求在子串和母串的公共子串中找到一个连续区间,使得连续区间的权值和最大,求最大权值和。每次找到合法区间,直接线段树上查询并更新答案即可。与此同时,需要缩短当前长度。,分别表示当前状态以及匹配长度,一开始。现在我们来描述如何添加一个字符。...原创 2022-07-26 11:22:22 · 284 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营3 A.Ancestor LCA+暴力计数
问有多少种方案使得去掉恰好一个关键点使得剩余关键点在树。树上每个节点均有一个权值,给出。,然后枚举所有的关键节点求。处理出所有关键节点的前缀。原创 2022-07-26 11:20:52 · 178 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营2 个人题解集合
显然要生成无限物品,需要存在一个环且沿该环生成一轮得到的物品数目比原来更多,即为环上满足所有的边有。显然可以二分答案来做。那么可以分上下两个过程,分别存下所有的端点(带标记),每个乘客分配的轮数可以通过。首先枚举插入的括号数量,原来的括号序列和左括号比右括号多的数量。,即左括号的数量大于右括号的数量,并且使用的原括号的数量。的括号序列(不保证合法性),求在此基础上生成的长度为。如果目前枚举到的括号为左括号,并且使用的原括号的数量。如果此时枚举到的是一个右括号,并且。、使用的原来的序列中的括号数量为。...原创 2022-07-24 15:48:28 · 756 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营2 I.[let fat tension] 矩阵乘法 J.[Link with Arithmetic Progression]线性回归
根据高斯-马尔可夫定理在给定经典线性回归的假定下,最小二乘估计量是具有最小方差的线性无偏估计量。发现先做后两个矩阵之间乘法,复杂度。容易发现是线性回归问题,于是考虑用。为按行归一化之后的矩阵。高中数学的知识解决。然后计算误差输出即可。...原创 2022-07-24 15:46:25 · 242 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营2 H.[Take the Elevator] 维护线段
那么可以分上下两个过程,分别存下所有的端点(带标记),每个乘客分配的轮数可以通过。轮出发的最高层数,那么最终答案就是枚举轮数。人,电梯有故障,向下运行时必须到达。楼层,问电梯至少需要跑多少趟。层楼的楼栋,现在有一个电梯从。轮到达的最高的层数,...原创 2022-07-24 15:45:02 · 293 阅读 · 0 评论 -
[GYM103660] The 19th Zhejiang University City College Programming Contest 浙大城市学院校赛VP/S
不难发现,实际上就是对于给定的一堆区间,寻找一个竖线,使之穿过的区间尽可能地多,且距离未穿过的区间的距离尽可能小。给定二维平面上的一些矩形,并给定这些矩形的权值,从这些矩形中选择两个不相交的矩形,使权值和最大。容易发现,按照两种排序执行,交换操作的执行次序均与逆序对的数量有关。简单版本直接暴力查找就可以,查到符合要求的前缀直接计数即可。层的怪兽血量,当堆顶的血量大于当前血量时不合法。轴并排序,然后求后缀最大值二分求答案即可。给定一棵树,求树上不相交的路径对数。层的塔,塔的每层有一个怪兽,怪兽拥有。...原创 2022-07-16 14:20:58 · 513 阅读 · 0 评论 -
2020 ICPC Asia East Continent Final G. Prof. Pang‘s sequence 线段树/扫描线
扩展完区间后,我们可以直接查询区间和,即为最终答案。为终点的区间奇偶结果序列。中满足不同数字个数为奇数的子区间个数。首先将所有询问离线,然后考虑对同一。组成的区间都不会发生奇偶性反转,而。注意进行反转操作的时候,需要交换。那么我们需要使用线段树维护。我们可以通过维护所有以。所有区间所有的右端点和。......原创 2022-07-15 20:51:43 · 442 阅读 · 0 评论 -
[2018EC] Philosophical … Balance SAM+树形DP
给定长度为nnn的字符串sss,要求给定sss的每个后缀s[i:]s[i:]s[i:]分配权值kik_iki(实数),满足0≤ki≤10 \leq k_i \leq 10≤ki≤1,且∑iki=1\sum_i k_i = 1∑iki=1。在此基础上,最大化以下式子的值:mini=1n(∑j=1nkjlcp(s[i:],s[j:]))\min_{i=1}^n \left( \sum_{j=1}^n k_j {\rm {lcp}} (s[i:],s[j:]) \right)i=1minn(j=原创 2022-07-14 09:54:43 · 203 阅读 · 0 评论 -
2018-2019 ACM-ICPC, Asia East Continent Finals D.F.I.L(VP)
VP情况略,不会的题单独补了签到题,直接判断n,mn,mn,m大小关系即可。F.Interstellar … Fantasy题目分析计算几何,不难发现三点一定共面,因此讨论能否走直线到达即可。不能走直线就走切线+圆弧。I. Misunderstood … Missing题目分析假定拥有基础攻击力AAA和增幅DDD(初始均为000)进行nnn轮游戏,每轮游戏开始A→A+DA \rightarrow A + DA→A+D,每轮游戏可以选择三个操作中的一种:问nnn轮游戏结束后能够造成的总最大伤害。每原创 2022-07-13 20:26:01 · 834 阅读 · 0 评论 -
The 2021 ICPC Asia Shanghai Regional Programming Contest 2021ICPC上海站VP
待补对于给定的p,qp, qp,q,找到a,ba, ba,b满足pq=ab+ba\frac{p}{q} = \frac{a}{b} + \frac{b}{a}qp=ba+ab。找不到输出0 00\ 00 0令x=abx = \frac{a}{b}x=ba,则pq=x+1x\frac{p}{q} = x + \frac{1}{x}qp=x+x1,故可得:qx2−px+q=0qx^2 - px + q = 0qx2−px+q=0,方程解为有理数时p2−4q2\sqrt{p^2 - 4q^2}p2−4原创 2022-07-07 22:45:01 · 1814 阅读 · 3 评论 -
2021ICPC上海 H.Life is a Game Kruskal重构树
给定一张nnn个点mmm条边的无向图,以及qqq个询问。对于每个询问,给定初始点和初始经验值,经过一条边要求当前经验值大于边权,经过一个点后点权累加至经验值。求能够获得的最大经验。首先容易证明,对于最终的答案,两个点之间的所有简单路径上最大边权的最小值 = 最小生成树上两个点之间的简单路径上的最大值 = KruskaKruskaKruskal 重构树上两点之间的 LCALCALCA 的权值那么容易想到对原图建KruskalKruskalKruskal重构树,不妨先对样例建树:红色数字表示KruskalKru原创 2022-07-07 12:34:17 · 379 阅读 · 0 评论 -
CAIP2021 初赛VP
暴力打表,然后O(1)O(1)O(1)回答询问即可。B.7-2 芬兰木棋分象限和坐标轴按斜率排序,然后每个区域按顺序进行遍历,动态改变方向统计即可。最大分数一定是所有木棋之和。可以assert检验答案对不对。C.7-3 打怪升级先跑Floyd再跑Dijkstra,代码没存…属于是什么算法都能杂一起了。。。典中典之并查集维护倒序加点...原创 2022-07-06 12:39:40 · 406 阅读 · 0 评论 -
The 19th Zhejiang Provincial Collegiate Programming Contest VP记录+补题
The 19th Zhejiang Provincial Collegiate Programming Contest VP记录+补题第19届浙江省赛 19th浙江省赛 题解/补题原创 2022-07-05 18:11:49 · 6815 阅读 · 0 评论 -
算法竞赛命题指南(命题流程、Polygon的使用等)
本文主要讲述人经验,可能与实际理解存在偏差,亦有片面的观点,还请见谅!主要包含Codeforces Polygon介绍、土法命题介绍等原创 2022-07-02 17:49:46 · 5255 阅读 · 2 评论 -
2022 东北四省赛 VP记录/补题
–待补–要求在给定的图上选择一个连通块,使得该连通块到其他点的距离和最小。考虑贪心的选取,我们可以将图展开,然后从叶节点开始按照逆BFSBFSBFS序进行删点,删完n−kn-kn−k个为止。可以用拓扑排序实现这个过程,设dis[i]dis[i]dis[i]表示该点子树的边数(边权和),在排序过程中更新最大值即可。C.SegmentTree题目分析要求在给定的覆盖[1,m][1,m][1,m]区间的线段树上找qqq条路径(自行构造),使覆盖的点的数目最大。首先可以肯定的是,当q≥mq \ge mq≥m时原创 2022-07-02 17:34:35 · 1400 阅读 · 1 评论 -
Codeforces Global Round A-F1
A - Log Chopping容易发现多个数和111个数的操作次数为求和关系。于是考虑一个数的情况,显然与x−1x - 1x−1操作次数的奇偶性有关。那么对所有数统计操作次数判断奇偶性即可。#include <bits/stdc++.h>#define int long longusing namespace std;inline void solve(){ int n; cin >> n; int cnt = 0; for(int i = 1;原创 2022-04-25 14:35:03 · 245 阅读 · 0 评论 -
Codeforces Round #781 (Div. 2) ABCD
A - GCD vs LCM题目要求a+b+c+d,gcd(a,b)×gcd(c,d)=c×da + b + c + d, \gcd(a, b) \times \gcd(c, d) = c \times da+b+c+d,gcd(a,b)×gcd(c,d)=c×d,那么直接等号两侧都是111即可。#include <bits/stdc++.h>#define int long long#define endl '\n'using namespace std;inline voi原创 2022-04-21 22:10:17 · 274 阅读 · 0 评论 -
Codeforces Round #783 (Div. 2) ABCD
A.Direction Change可以证明最佳策略一定可以转化为走正方形对角阵然后再盘旋走到底。于是特判222的情况(拐不了)然后输出即可。#include <bits/stdc++.h>#define int long long#define endl '\n'using namespace std;const int N = 1e5 + 100;int ans[N];inline void solve(){ int n, m; cin >> n &g原创 2022-04-20 16:04:54 · 442 阅读 · 0 评论 -
Codeforces Round #782 (Div. 2) ABCD
打昆明打傻了,不会写题了QWQA - Red Versus Blue要求连续的RRR的数量最少,也就是用BBB尽可能的将RRR隔开,显然bbb个BBB最多分成b+1b+1b+1段,那么直接将RRR平均分配到每一段即可。#include <bits/stdc++.h>#define int long long#define endl '\n'using namespace std;const int N = 1e5 + 10;int a[N];inline void so.原创 2022-04-19 16:35:03 · 491 阅读 · 0 评论 -
The 2021 ICPC Asia Taipei Regional Programming Contest
待补:C.Community Service/D.Largest RemainderA. Ice Cream直接O(1)O(1)O(1)计算即可。#include <bits/stdc++.h>#define int long longusing namespace std;inline void solve(){ int n, x, y; cin >> x >> y >> n; int by = (n / (x + y)) .原创 2022-04-11 15:22:12 · 1526 阅读 · 0 评论 -
Codeforces Round #779 (Div. 2)
A. Marin and Photoshoot既然要求相邻两人111男111女,那么对于000000中间暴力插222个111,对于010010010中间暴力插111个111即可。#include <bits/stdc++.h>#define int long longusing namespace std;inline void solve(){ int n = 0; cin >> n; string s; cin >> s; int原创 2022-03-28 16:30:47 · 378 阅读 · 0 评论 -
AcWing 4381. 翻转树边 暴力DFS
思路可以考虑利用树上前缀的和思想来处理。实际上就是利用根节点记录反向反信息。我们首先处理出根节点到所有点的反转次数,然后再用一个dfsdfsdfs处理出每个节点的信息。注意第二个dfsdfsdfs,第二个dfs 根节点往下走的时候是逆过程,根节点->当前节点的顺向边都是负贡献,反转次数+1,反之亦反。邻接表&&链式前向星均可,输入输出都没卡,可以说非常善良了。AC Code#include <bits/stdc++.h>const int N = 1e6 +原创 2022-03-27 21:23:30 · 678 阅读 · 0 评论 -
2021 ICPC Southeastern Europe Regional Contest ABFGJKLN
|–>传送门<–|A. King of String Comparison 双指针给定字符串AAA和BBB,计算满足Asub[l,r]A_{sub[l, r]}Asub[l,r]字典序小于Bsub[l,r]B_{sub[l,r]}Bsub[l,r]的[l,r][l, r][l,r]的个数。直接双指针扫一下,扫到满足的前缀就直接进行计数。否则直接跳下一个。#include <bits/stdc++.h>#define int long longusing namespa原创 2022-03-24 20:21:15 · 2408 阅读 · 0 评论 -
Codeforces Round #773 (Div. 2)
A.Hard Way排序找最高两个点判断一下#include <bits/stdc++.h>#define int long longusing namespace std;struct node{ int x, y; const bool operator< (const node &a){ return y < a.y; }}a[10];inline void solve(){ for(int i = 1; i <= 3;原创 2022-02-24 13:16:07 · 611 阅读 · 0 评论 -
括号序列【第十二届】【省赛】【B组】 DP
思路设dp[i][j]dp[i][j]dp[i][j]表示到第iii个括号,当左括号比右括号多jjj个的情况下,添加左括号的方案数。首先显然在一堆左括号里添加左括号对方案数是毫无贡献的,因此只有在一堆右括号中加左括号才会对方案产生贡献。则:s[i] == '('时,dp[i][j]=dp[i−1][j−1]dp[i][j] = dp[i - 1][j - 1]dp[i][j]=dp[i−1][j−1];s[i] == ')'时,dp[i][j]=dp[i−1][j+1]+dp[i−1][j]+dp[原创 2022-02-23 16:23:03 · 1333 阅读 · 1 评论 -
Educational Codeforces Round 123 (Rated for Div. 2) ABCDE
A.Doors and Keys写个if,然后疯狂复制粘贴。#include <bits/stdc++.h>using namespace std;inline void solve(){ string s; cin >> s; bool st[3] = {0, 0, 0}, flag = true; for(int i = 0; i <= s.size(); i++){ if(s[i] == 'r') st[0] = true原创 2022-02-23 15:49:39 · 210 阅读 · 0 评论 -
Codeforces Round #772 (Div. 2) ABCD
A - Min Or Sum根据题目要求可以发现,要使得总和尽可能地小,应尽可能将选择的(ai,aj)(a_i, a_j)(ai,aj)变为(ai∣aj,0)(a_i | a_j, 0)(ai∣aj,0)。那么统计111的位数求和或直接所有元素求或即可。#include <bits/stdc++.h>#define int long longinline void solve(){ int ans = 0, n = 0; std::cin >> n;原创 2022-02-21 18:37:46 · 239 阅读 · 0 评论 -
2022牛客寒假算法基础集训营5 ADEGIJ
罚坐场A.疫苗小孩可以三种做法来写:Sol.1 二分111针和000针的贡献都为000,那么固定必打111针以上,枚举这一针的位置pospospos(看作第二针),然后二分找到离pos−kpos - kpos−k和pos+kpos + kpos+k最近的点,然后讨论计算贡献即可。注意二分的边界,写丑了就挂了。。。#include <bits/stdc++.h>#define int long longusing namespace std;const int N = 1e.原创 2022-02-10 23:36:52 · 356 阅读 · 0 评论 -
2022牛客寒假算法基础集训营4 ABCDEFGHIJK
A.R思路她想取一个连续子串,该子串包含至少kkk个'R'字符,且不能包含'P'字符。很裸的双指针,枚举每个右端点,找到最后一个符合条件的左端点后计数即可。Accepted Code#include <bits/stdc++.h>#define int long long using namespace std;string s;inline void solve(){ int n, k, ans = 0; cin >> n >> k >原创 2022-02-08 21:37:46 · 789 阅读 · 0 评论 -
2022牛客寒假算法基础集训营3 ABCDEGIJL
A.智乃的Hello XXXX思路没有思路Accepted Code#include <bits/stdc++.h>#define int long longusing namespace std;inline void solve(){ cout << "hello chino" << endl;}signed main(){ solve(); return 0;}B.智乃买瓜思路对每个数字进行拆解,并在拆解过程中原创 2022-01-29 01:00:45 · 914 阅读 · 0 评论 -
2022牛客寒假算法基础集训营2 G.小沙的身法 LCA 树上前缀和
思路注意模拟样例的时候不要把询问读成连边。。。LCA板题,维护树上前缀和,按照题目要求先跳到uuu再跳到vvv,再调到地上。向高处跳需要消耗高度差的体力,向低处跳不消耗体力。那么需要分三段进行计算:地→a\rightarrow a→a:需要消耗高度aaa的体力。a→ba \rightarrow ba→b:求树上路径,首先从aaa点跳到LCA(a,b)LCA(a, b)LCA(a,b),需要消耗sum[a]−sum[lca]sum[a] - sum[lca]sum[a]−sum[lca],然后从L原创 2022-01-28 11:12:51 · 1277 阅读 · 0 评论 -
2022牛客寒假算法基础集训营2 B.小沙的魔法 并查集
概述nnn个点mmm条边的图上,每个点的初始权值为000。给定一个边集,每次可以进行两种操作:在mmm条边里选择一条边加入图中;将图上某一连通块的所有点权+1+1+1.求最小操作数,使得图上点权xi=aix_i = a_ixi=ai。首先考虑如何减少操作数:也就是如何减少无意义的分次加点权。如果对于两个点权a,b(a>b)a, b(a > b)a,b(a>b),显然我们可以将一个点的点权增加至(a−b)(a - b)(a−b),然后将两个点合并起来加点权,这样可以刚好将两原创 2022-01-27 22:09:00 · 1054 阅读 · 0 评论 -
2022牛客寒假算法基础集训营2
文章目录A.小沙的炉石思路Accepted CodeB.小沙的魔法[并查集 待补]C.小沙的杀球思路Accepted CodeD.小沙的涂色[待补]E.小沙的长路思路Accepted CodeF.小沙的算数思路Accepted CodeG.小沙的身法[待补]H.小沙的数数思路Accepted CodeI.小沙的构造思路Accepted CodeJ.小沙的Dota[线段树+DP 待补]K.小沙的步伐思路Accepted CodeL/M.小沙的Remake[待补]A.小沙的炉石思路有nnn张法术进攻牌,每原创 2022-01-26 23:52:23 · 879 阅读 · 2 评论
分享