牛客赛前集训营提高组(第四场)

注:买的去年的题,本地OI赛制,排名按当年的计算。

又双叒叕挂大分,T2离正解只差一步(但输出格式错了,10pts -> 0pts),T3花了 1h 30min 打出了正解但由于线段树标记没开 long long 爆 55 了

把 1 个人劈成 4 半,用树状数组维护区间人数和, O(nlog⁡n)O(n\log n)O(nlogn) 就可以过掉此题。

代码:

考场都看出来用角谷猜想逆推了,但没想到负数怎么处理,结果直接 0 分。

角谷猜想,对于任意一个正整数 n,进行如下变换:若为偶数则变为 n/2,否则变为 n*3+1

负数的话先用后两种操作降为 100 以内(此时它会出现循环),然后一直加 ddd 直到大于等于 111 为止,然后再正着一遍角谷猜想即可得出答案。

代码:

WARNING:本题思维难度不大,但代码实现难度极高,提高组及以下 OIer 请在成年人的陪同下谨慎观看!

考虑暴力拆式子:

AxA_xAx​

=dis2(x,0)+∑dis2(x,y)=dis^2(x,0)+\sum dis^2(x,y)=dis2(x,0)+∑dis2(x,y)

=dis2(x,0)+∑(depx+depy−deplca(x,y)×2)2=dis^2(x,0)+\sum(dep_x+dep_y-dep_{lca(x,y)}\times 2)^2=dis2(x,0)+∑(depx​+depy​−deplca(x,y)​×2)2

=dis2(x,0)+∑(depx2+depy2+deplca(x,y)2×4+depx×depy×2−depx×deplca(x,y)×4−depy×deplca(x,y)×4)=dis^2(x,0)+\sum({dep_x}^2+{dep_y}^2+{dep_{lca(x,y)}}^2\times 4 +dep_x\times dep_y \times 2-dep_x\times dep_{lca(x,y)} \times 4-dep_y\times dep_{lca(x,y)} \times 4)=dis2(x,0)+∑(depx​2+depy​2+deplca(x,y)​2×4+depx​×depy​×2−depx​×deplca(x,y)​×4−depy​×deplca(x,y)​×4)

=dis2(x,0)+∑depx2+∑depy2+4×∑deplca(x,y)2+2×depx×∑depy−4×depx×∑deplca(x,y)−4×∑depy×deplca(x,y)=dis^2(x,0)+\sum {dep_x}^2+\sum{dep_y}^2+4\times\sum {dep_{lca(x,y)}}^2+2\times dep_x\times\sum dep_y-4\times dep_x\times\sum dep_{lca(x,y)}-4\times\sum dep_y \times dep_{lca(x,y)}=dis2(x,0)+∑depx​2+∑depy​2+4×∑deplca(x,y)​2+2×depx​×∑depy​−4×depx​×∑deplca(x,y)​−4×∑depy​×deplca(x,y)​

第 1,21,21,2 项(dis2(x,0)dis^2(x,0)dis2(x,0),∑depx2\sum {dep_x}^2∑depx​2):这个应该不难 O(1)\mathcal{O}(1)O(1) 求出。

第 3,53,53,5 项(∑depy2\sum{dep_y}^2∑depy​2,2×depx×∑depy2\times dep_x\times\sum dep_y2×depx​×∑depy​):可以顺便维护前缀和,同样可以 O(1)\mathcal{O}(1)O(1) 求出。

第 666 项(4×depx×∑deplca(x,y)4\times dep_x\times\sum dep_{lca(x,y)}4×depx​×∑deplca(x,y)​):可以采用树剖,将 yyy 到 000 的路径每一段边都加 111,查询出的 xxx 到 000 路径上的权值和即为答案。

第 777 项(4×∑depy×deplca(x,y)4\times\sum dep_y \times dep_{lca(x,y)}4×∑depy​×deplca(x,y)​):与第 666 项同理,只不过边上的权值加的是 depydep_ydepy​。

第 444 项(4×∑deplca(x,y)24\times\sum {dep_{lca(x,y)}}^24×∑deplca(x,y)​2):这是最难的一项,不过仍然可以维护,考虑平方数列 1,4,9,16,...1,4,9,16,...1,4,9,16,... 它的差分数组是 1,3,5,7,...1,3,5,7,...1,3,5,7,... 因此只要维护区间加等差数列即可,由于每次都是修改到根结点的所以不存在链反向的情况。

总复杂度 O(nlog⁡n)\mathcal{O}(n\log n)O(nlogn)。

代码:

注意线段树的 tag 一定要开 long long,因为单次的累加不会爆但累加

设 dpidp_idpi​ 为第 iii 个时间如果牛牛还没下班,他的最大欢乐值。

转移方程不难,但要注意牛牛不能在接完所有人之后摸鱼,且必须接完所有人。

加上点小优化可以做到 O(n2)\mathcal{O}(n^2)O(n2)(跑不满),目前尚未弄懂如何用李超线段树优化。

//后记&总结:本次考试时间分配极不合理, T1 其实就花了 10min ,本来是占很大优势的,T2离正解只差一步之遥,但却把大笔的时间押在了 T3 上,虽然最后也打出来了,却因为没开 long long 挂了 45 分,且因此没时间打 T4 的 dp。总而言之还是要调整好自己的状态,找好自己的节奏,这样才能发挥出真实的实力。

THE END
0.2022OI集训营普及组第二场题解ACM竞赛2022OI集训营普及组第二场题解 T1 隔离 要么只隔离一次,要么一直来回,不被隔离。如果去一趟 B 地把所有事情办完也是回来隔离,办一部分回来也是隔离,那肯定选择一次办完。 分类讨论这两种情况哪一种耗时多就可以了。 #include <iostream> #include <algorithm> using namespace std; int n, a[100jvzquC41ce4oq€hqfgx/exr1fkydw|x132=24B>Av{vf?:53
1.2024牛客OI赛前集训营普及组(第一场)题解,以此来更新答案,粗略观察一下,由于 如果相差过大,那求和式子一定会随着它变大而变小,所以枚举的数量级和 同级即可,复杂度 。 直接暴力枚举 ,更新答案的时候,我们可以改写一下求和式子: 其中三个求和式都可以预处理,获得答案,则可以 预处理, 枚举,复杂度 jvzquC41o0tpyltfgt4dqv4fkuivu|4894812:9685=5:>578
2.2024牛客OI赛前集训营普及组(第一场)题解,以此来更新答案,粗略观察一下,由于 如果相差过大,那求和式子一定会随着它变大而变小,所以枚举的数量级和 同级即可,复杂度 。 直接暴力枚举 ,更新答案的时候,我们可以改写一下求和式子: 其中三个求和式都可以预处理,获得答案,则可以 预处理, 枚举,复杂度 jvzquC41yy}/px|eqfks0lto1fote~xu18=3495366<49==727<
3.2024牛客OI赛前集训营普及组(第一场)牛客OI赛前集训营,是牛客网为即将参加CSP、NOIP考生举办的赛前特训营。集合多名ICPC、APIO、WC金牌选手联合出题,更全面的帮助选手提升能力,冲破短板。 高分命题团联合出题: ICPC、APIO、WC金牌选手选手联合出题 比赛时间 10月5日-10月16日 每周一、三、六,晚上普及组18:30-22:00,提高组18:00-22:00,各6场jvzquC41ce4oq€hqfgx/exr1ces0exsvguz0;9;52
4.2024牛客OI赛前集训营普及组(第一场)题解A 本关考验你求最大值功夫 直接暴力枚举 并暴力统计 ,以此来更新答案,粗略观察一下,由于 如果相差过大,那求和式子一定会随着它变大而变小,所以枚举的数量级和 同级即可,复杂度jvzquC41dnuh0wtyeqjft7sgv1t089ge4592fl>76:79d@:7e;869k9;g997
5.2022牛客多校联赛第三场题解2022牛客oi赛前集训营问有多少种方案,使得去掉恰好一个关键点使得剩余关键点在树A上LCA的权值大于树B上LCA的权值。 考察内容 lca,dfs序,模拟 分析 模板题。 已知多个结点的lca就是dfs序第一个结点和最后一个结点的lca。 预处理好dfs序,前两个结点,后两个结点,然后枚举删去的结点,累加答案即可。 jvzquC41dnuh0lxfp0tfv8|gkzooa>6;59<9:8ftvkimg8igvcomu8647;>49?;
6.牛客OI赛前训练营(2023)普及组题目选解作为一个退役有一段时间的蒟蒻,发现今年的题目甚至像是比往年的模拟赛更简单,很神奇。 这些题目中,不乏有一些值得复习巩固的好题,于是写这篇博客记录一下。 题目排序: std::sort(problem + 1, problem + n + 1, [](const Problem x, const Problem y) { if (x.contestID == y.contestID) return xjvzquC41dnuh0wtyeqjft7sgv1t0f965g5
7.[C++知识库]牛客oi普及组第一场AC++知识库, 牛客oi普及组第一场A-C (D在下一篇), , A:学习除法 ? 鸡尾酒的学生丹丹学不会除法,有一天他遇到了这样的一jvzq<84yyy44h€ttm0ipo8pckhg32:423:>56V^O2;754;4
8.如果你是五彩的糖&#xff0c;那我就当保护你小小的糖纸如果你是五彩的糖,那我就当保护你小小的糖纸 jvzquC41ddy/e|ip0pku1}trkey08;5222:44
9.2023OI集训营普及组第三场题解要求至多改两个字符:首先考虑先通过修改把字符串改为回文串,先统计一个修改次数。 之后考虑如何继续修改:若没够两次修改,可以再在回文串基础上继续减小字典序。 若当前位置之前修改过,相当于只需要把对应位置都改为'a',修改次数加一(因为已经在前面统计过一次了) jvzquC41o0tpyltfgt4dqv4fkuivu|47628:5:>;73995@:8:
10.2024牛客OI赛前集训营普及组(第三场)题解ACM竞赛2024牛客OI赛前集训营-普及组(第三场)题解 https://ac.nowcoder.com/acm/contest/90632 1.先加后乘 题意:目的找到3个数字 ,使得 ,输出 。 题解:注意数据范围 的遍历明显不能通过此题。此时先给数组进行一个排序。我知道很多人会想 秒了!很可惜忽略了题目中的另一个数据范围:每个整数的绝对值不超过jvzquC41ce4oq€hqfgx/exr1fkydw|x136718;8
11.2022牛客OI赛前集训营普及组(第四场)总结牛客T1 挺爱考模拟哈 其实难度不难,就是代码烦 在这道题中,我们不仅在输入时要准备一个输入用的s ss数组,还要准备一个a n s ansans数组 当我们输入字符串s ss时,如果输入的是字母,则直接塞入a n s ansans中,否则,输入的就是数字,我们就用处理快读的类似方法来处理这一串数字的十进制结果s u m sumsujvzquC41dnuh0lxfp0tfv8H424:YUL6:61gsvrhng1jfvjnnu1739;=288;
12.2023OI集训营提高组第六场题解4 5 9 14 4 5 9 15 4 5 9 16 // 如果第二个数字等于第一个数字 +1,第三个数字等于前两个数字之和,那么当 n=2,3,4 时,不合法的方案数分别有 1、2、3 种 4 5 10 15 4 5 10 16 // 如果第三个数字等于前两个数字之和 +1,那么当 n=2,3,4 时,不合法的方案数分别有 0、1、2 种jvzquC41o0tpyltfgt4dqv4fkuivu|4764>42?8343797:<98
13.题解2023牛客OI赛前集训营【题解】2023牛客OI赛前集训营-普及&提高(第一场) 提高组题解普及组题解 题解| #交换变量值# import java.util.Scanner;public class Main { public static void main(String[] T1为什么95pt?求找错,悬赏1洛谷关注 #include<bits/stdc++.h>using namespace std;#define lowbit(x) x&(-x)#de jvzquC41dnuh0lxfp0tfv8mcpa~vghkgpi5bt}neng5eg}fknu525<:537:3
14.牛客竞赛OJACM/NOI/CSP/CCPC/ICPC牛客竞赛是专业的编程算法训练平台,包括ACM校赛、ICPC、CCPC、CSP、信息学省选、NOI等编程比赛提高训练营。适合初级小白编程入门训练,包含CSP入门级提高级赛前集训、ACM区域赛前多校训练营。jvzquC41ce4oq€hqfgx/exr1ces0exsvguz0xru/kpjfzHwcpmZzrnKknvks?;+qpnDtnfvgHomvnw?hcrtg/yqrEgugptt{Homvnw?37,dc}jiqtGkuygt?32(|nipWvGkuygt?9'q{igtVqgFSQ
15.牛客网NOIP赛前集训营普及组霜雪千年牛客网NOIP赛前集训营-普及组 第一场: A-绩点 题目描述 小A刚考完大学考试。现在已经出了n门课的成绩,他想自己先算一下这些课的绩点是多少。设第i门课的他拿到的绩点是gpai,而这门课的学分是sci,那么他的总绩点用下面的公式计算: , 换言之,设S为sci的和,T为gpai与sci的乘积的和。那么小A的绩点就jvzquC41yy}/ewgnqiy/exr1cempvx4r1;<65:6:0jznn
16.牛客OI周赛14普及组览遍千秋牛客OI周赛14 普及组 Prologue 菜的真实,普及都 AK 不掉.. Score: 100 + 100 + 100 + 0 = 300 rank: 16 A String 看来PJ T1 考字符串读入成铁上钉钉了? 考虑开桶aa,记录 ASCII 为ii的字符是否出现即可。 #include<bits/stdc++.h> usingnamespacestd; typjvzquC41yy}/ewgnqiy/exr1nk{ccrskcp5q1:76669797mvon
17.牛客OI赛前训练营(2023)普及组题目选解作为一个退役有一段时间的蒟蒻,发现今年的题目甚至像是比往年的模拟赛更简单,很神奇。 这些题目中,不乏有一些值得复习巩固的好题,于是写这篇博客记录一下。 题目排序: std::sort(problem + 1, problem + n + 1, [](const Problem x, const Problem y) { if (x.contestID == y.contestID) return xjvzquC41yy}/px|eqfks0lto1fote~xu17:54A>:38>68;=;4:6
18.2023牛客OI赛前集训营普及组(第一场)2023牛客oi赛前集训营文章介绍了三个编程题目,涉及贪心算法求余、从字符串中提取数字、使用动态规划解决武器选择问题以及区间dp求括号序列的最长有效序列,展示了在不同场景下的编程技巧和时间复杂度优化。 T1 学习求余 一道灰常简单的贪心题,证明过程如下: 因为n mod k=q jvzquC41dnuh0lxfp0tfv8q{n46239=531gsvrhng1jfvjnnu1745?::83?
19.牛客网NOIP赛前集训营提高组(第一场)NOIP集训营是牛客网为NOIP选手举办的赛前特训营,训练分为普及组和提高组两组。旨在通过比赛,讲解,交流来提升同学们的编程能力,为即将到来的比赛备战。此外,还可以通过集训营认识更多大佬。 欢迎加入牛客网OI交流群:811833252 命题团队(按字典序排名): 毕克2012NOI金 陈俊锟2016NOI金 陈孙立2018NOI金 高宇regionajvzquC41yy}/px|eqfks0lto1cin1ltpvgyu1:<4
20.2021牛客OI赛前集训营普及组(第一场)题解Venn:第二题搞个二分吧。 BLUESKY007:我更喜欢位运算,也是log的。 Venn:那就二分+位运算。 考察知识点 位运算,二分, 哈希 做法 对于前50%的点,我们考虑使用一个 的二重循环,枚举所有的数对,判断是否为答案。 对于接下来25%的数据,我们考虑 等价于 jvzquC41yy}/px|eqfks0lto1fote~xu19<679=
21.「2023牛客OI赛前集训营普及组第一场」学习求余题解给定数字n nn,你可以任选一个数字k kk(1 ≤ k ≤ n 1 \leq k \leq n1≤k≤n),然后计算出n % k n\%kn%k的值(其中% \%%为求余运算),记为q qq,请问k × q k \times qk×q的最大值是多少。 输入格式 输入仅包含一个正整数n nn。 jvzquC41dnuh0lxfp0tfv8QQUGX`Yxwnf1gsvrhng1jfvjnnu1745A7:93=
22.2020牛客NOIP赛前集训营普及组(第六场)全部解析来源:牛客网 牛牛最近对7很感兴趣,他想到了一个问题。 牛牛想存n元钱,他决定第1天存1元,第2天存7元,第3天存49元,以此类推,每天存的钱是前一天的7倍。 牛牛想知道几天后,存款的总额能大于等于n元钱。 不会吧不会吧,这都不会 思路 被我吃了 jvzquC41dnuh0lxfp0tfv8|gkzooa=>:65=298ftvkimg8igvcomu862;5?4897
23.题解2024牛客OI赛前集训营普及组(第三场)先对第一行的每一个位置都dfs一下,记录它所覆盖的城市的左右边界,并且将能到达城市(最后一行)都标记一下。计算标记的数量可知是否有解。然后对于最后一行进行贪心即可求得最少水厂数。贪心策略是从左往右选取覆盖面积最长的水厂,且保证该水厂的左边界在已覆盖的区域内。jvzquC41dnuh0wtyeqjft7sgv1t07<::eglf:B;g68>bc:8ded92en57ef8b
24.牛客网NOIP赛前集训营普及组(第二场)NOIP集训营是牛客网为NOIP选手举办的赛前特训营,训练分为普及组和提高组两组。旨在通过比赛,讲解,交流来提升同学们的编程能力,为即将到来的比赛备战。此外,还可以通过集训营认识更多大佬。 欢迎加入牛客网OI交流群:811833252 命题团队(按字典序排名): jvzquC41yy}/px|eqfks0lto1cin1ltpvgyu1:;7
25.2023OI集训营普及组第四场题解对。其中应该一半逆序对,一半顺序对。可以求出来一共是多少逆序对/顺序对。 考虑希望字典序最小。不妨逐位考虑: 第一位放 时,后面的所有位置一定比 大,一定提供的是顺序对。会提供 对。 第二位放 时,后面的所有位置一定比 大,会提供 对。 一直重复第 jvzquC41o0tpyltfgt4dqv4fkuivu|4763992;:534955?:66
26.2024CSPJ2入门组CSPS2提高组第2轮模拟题牛客周赛Round63 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 牛客2024年1024程序员节娱乐赛 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 2024牛客OI赛前集训营-普及组(第一场) 2024牛客OI赛前集训营-普及组(第一场)_CSP/NOI/信息学奥赛培训提高_牛客竞赛OJ jvzquC41dnuh0lxfp0tfv8innirw|qjphgth1jwvkerf1mjvckrt1:948:>9;A
27.牛客竞赛ACM/NOIP/NOI/CCPC/ICPC下周六(9月8日)【牛客网NOIP赛前集训营】就要开始啦~~ 为了给大家更好的比赛体验、以及可以提前熟悉环境(这个很重要) 特组织牛客OI赛制测试赛,牛客OI赛制比赛依旧从控制台stdin读入数据 题目难度 普及组等级,总共 6 题。欢迎大家各种压力测试,本测试赛不计rating,23333 jvzquC41yy}/px|eqfks0lto1cin1ltpvgyu1:=3
28.牛客OI周赛15普及组SuccessfulRoad牛客OI周赛15-普及组 链接:https://ac.nowcoder.com/acm/contest/4911/A 来源:牛客网 题目描述 牛牛最近喜欢玩咪咪游戏,于是自己写了个程序编了个游戏让牛妹来玩。游戏是这样的: 牛牛有一个长的字符串(只包26含个小写字母),他想让牛妹判断这个字符串是好的。jvzquC41yy}/ewgnqiy/exr1Ujuxgwi1r1739:;9924ivvq