- 博客(45)
- 收藏
- 关注
原创 2026“钉耙编程”中国大学生算法设计暑期联赛(8)
这样做的贡献是 f*(1+3^cnt),cnt=0即无法构造这种情况时为f*2,与000...2相同。x-2 - x-1的贡献计算同上,我们考虑如何计算 最后一次x-2出现 到x 的x-1 的个数。dp跑n和k的遍历需要O(nk),而组合数计算的空格是len-(k-1)*(i-1)假设前面存在x个这样的前缀,对于每一个距离rem=i的前缀,它的贡献为3^i。我们希望存在 形如 x-2 x-2 x-2 x-1 x-1 x-1 x的数组。dp转移方程为dp[k][len]=dp[k][len-1];
2026-08-17 09:45:00
70
原创 2026牛客暑期多校训练营9 2026-8-14
暴力set维护子树向上传递的过程,如果出现时间+到根节点距离相同的点在同一处相遇,则会消失。最左列,最右列,长度,生成一条对角线的最短时间,生成完整正方形的最短时间,当前扩展方向。如果下一个矩阵在当前扩展方向,则只需生成对角线,否则需要等待正方形完全生成。设在t轮内用k次毒伤,对毒伤能否结算完全分讨,伤害计算公式为。因为涉及到区间合并,可以用启发式将复杂度降到nlogn。有相邻就合并,最终的合法条件是仅剩下大正方形;一个显然的贪心是:毒伤肯定要在前面打。轮次与伤害成正相关,故二分答案即可。
2026-08-16 21:21:29
193
原创 2026“钉耙编程”中国大学生算法设计暑期联赛(4)
对于一个中位数p,如果它的出现次数-1>=1,说明它还需要作为中位数,此时删除它的两边,如果=0,说明它不需要被作为中位数了,分别考虑中位数左移/右移,左移需要删除p和nxt[p](在可删除数组中),右移反之,分别考虑可行性。反向思考,在1-n成排列时,最后一个数必然为n个数的中位数,我们反向模拟删数的过程,具体的,对于每一个中位数,我们考虑它作为中位数需要在原数组中满足的条件(即删除两个数)中序遍历就是原数组的顺序,也就是询问等价 两个节点的lca为根,左边的部分后缀子树和右边的部分前缀子树的最大深度。
2026-08-11 10:15:00
235
原创 2026“钉耙编程”中国大学生算法设计暑期联赛(3)
考虑类似二分图的建法,假设 (e, w) 表示一条容量为 e,费用为 w 的边。首先源点 S 向每个小朋友连接 (1, 0),表示每个小朋友都要买玩具;其次每个小朋友向每个喜欢的玩具连接 (1, 0),表示可以买这个玩具;最后是每个玩具向汇点 T 连边,第 i 个玩具要连yi 条边,其中第 j 条边为 (1,wi,j)。比如 {1,2},{2,3},{3,4},{4,2},答案可能是 1,2,3,4 或1,3,4,2,取决环的起始位。考虑对每两个可能答案连边,如果是链则答案唯一 ,环则有1/2的概率对。
2026-08-10 09:45:00
223
原创 2026“钉耙编程”中国大学生算法设计暑期联赛(1)
手推一下可以看出来,每次加入的代价和当前连通块的a/b的值相关,越小越优,并查集维护当前连通块的联通情况,优先队列维护a/b,每次将最优的与它的父亲合并,记得记录 已经合并的块。伪代码翻译一下就是 对于字符串的每个后缀,往后新加入任意出现过的字符时需要在next数组中跳过的次数的累加。我们尝试记录每个原排名后出现过的数字,依照次序遍历即可得到新的 以l开头长度为w+1的数字的排名。第二种是上一个选出的区间长度恰好等于当前区间长度,但上一个数的字典序更小。因此选出 的最长数字串的长度是。
2026-08-09 20:35:40
181
原创 2026牛客暑期多校训练营6 2026-8-5
定义一个dfs过程为 对于一个点u,遍历与它相邻的所有点,假设从该点走向u,判断这条边是否为必胜边,是则标记并将该边加入搜索队列。赛时没看到F的时限给了10s,扩展kmp后打完二进制状态压缩的拓扑解后感觉时间复杂度暴了,想了半天点分治。维护 每一种状态的 i的1总数 i+d的1总数 状态数 (i的1个数)*(i+d的1个数)它的意义是保证状态合法,最终的合法状态为0 0 即不存在进位/退位。一个点必胜的条件是 它的边上存在sp点 或 存在一条通向必胜的边。os:代码能看出作者的心路历程。
2026-08-09 10:00:00
181
原创 2026牛客暑期多校训练营7 2026-8-7
若至少有四种值,取A<B<C<D,对手先给出(A,B)与 (C,D)。再将第二份配 成(p,q) 与 (r,s),无论玩家如何定向,总差值均为 (p +q−r−s)±(p−q)±(r−s)=2(u−v), 其中u∈{p,q},v∈{r,s}。三类剩余数量的奇偶性相同;两种值A,B:每次对手给出不同值,交替的放置(A,B)和(B,A)。我们尝试寻找val的高位是否存在val的位可修改且为0的值,并希望这个位距离该位尽可能近,以便构造出尽可能小的数,将该位修改为1,高位沿用val,比该位低且可修改的值置0;
2026-08-08 09:45:00
165
原创 2026暑期牛客多校4 2026-7-29
对于一个固定的i,可以在O(2m·m+n)的时间求出对应的TS,i。对于固定 的程序x,假设他能通过的测试点集为Px,在i上的运行时间为dx,i,则只 需要对Px的所有子集加上dx,i 即可。从小到大枚举len,记录上一个prvlen下每个位置的最小结尾,对于每一个位置来说,我们希望找到prv在值位于[2*a[i],3*a[i]]之间的最小位置,dp[len][i]=该位置。具体的,线段树维护对于某个a[i]的大小,它的最小位置,也就是说线段树的查询范围是a[i]的值而不是i,查询结果才是i;
2026-08-02 09:30:00
191
原创 2026暑期牛客多校3 2026-7-24
考虑到 0 1 2 0 和 1 2 0 1 本质上是同一种状态,我们将这种相对顺序相同的并为一种,分别统计这样的状态有几种,此时的st[状态]表示该编码的状态有多少种,chang[第一种状态]第二种状态[]=num表示第一种状态转移到第二种有多少种情况;具体的,对于每一个元素,创建一个{行,行最小列,行最大列}的三元组,每次判断当前行是否存在,若不存在则加入当前列为最小/最大列,若存在则跟新最大列。新序列的前缀和 R_k 满足 R_k=A_{m-k} 因此原序列合法,当且仅当新序列的所有非空前缀和均为正。
2026-08-02 09:00:00
179
原创 2026暑期牛客多校2 2026-7-22
设V=22k−1 ,则将(V,2V) 和(2V⊕3,4V) 匹配即可,这样相当于拆 掉了原有的(2V,2V⊕3) 和 (4V,4V⊕3) 而重新构造了两对,同时也让 没有匹配的数从V变成了4V+3。而配对的两个数满足二进制表示中1的个数的奇偶性相同,因此选取的 a, b 的二进制表示中1的个数的奇偶性也相同,否则无法构造。注意到所有数的亦或和固定,则对这个sumxor来说,它是1的维度被拆分也是1 0,对和没有影响,而原来是0的维度,我们则希望将它拆成 1 1,对和的增量为拆出来的数*2。
2026-08-01 09:00:00
392
原创 2026暑期牛客多校1 2026-7-17
AC自动机的建立和模板基本上没有区别,唯一的优化是增加了up来优化fail指针的跳跃,具体的,我们希望在扫描s的时候,每经过一个字母都往上跳,寻找是否存在符合的以它为结尾的询问,但如果该节点对应的值未被记录则可以直接跳至它的fail指针处。相同长度的不同子串在S中的出现位置互不相同,因此同一个长度的查 询的出现位置个数之和是O(n),不同的查询串长度只有O(√T)种,总 复杂度是O(T|Σ|+n√T),其中 T= |t|,|Σ|=26 是字符集大小。对于1e4以上的数据,dp1e4+dt*g。
2026-08-01 08:30:00
190
原创 「睿琪杯」浙江省第 23 届大学生程序设计竞赛 题解
现在我们有了每次操作的最终位置和那个位置对应的信息,正序遍历,插入操作在对应的数组数组位置插数(插的是最终位置,这样不会影响其他操作),对于查询,我们同样使用树状数组二分,分别查找行/列中有x/y个数被占用的位置,比较时间输出;我们从高到低遍历每一个二进制位,因为我们需要找到 有 x 个被占用的位置,所以如果当前这个tree[i]存储的x的个数小于k,就令位置加上这个区间值,同时将k(目标值)减少;我们知道,在树状数组中,tree[i]存储的是[i-lowbit(i),i]的和;初始位置(idx)=0;
2026-05-28 22:42:23
291
原创 2026“钉耙编程”中国大学生算法设计春季联赛(7)复盘
对于一个点和它上面的边,如果这个点是存档点,那它上面的边只用经过一次(因为想解决它的子树的叶节点可以直接跳这个点,不用再过一次那个边),如果不是,那基于下面还需要多少次经过,将(经过次数-1 )*权值,累加到答案,计算当前节点上方还需要多少次经过的方法是从子节点收集,子节点是存档点则收集1,不是则继续像子节点收集,向上汇集消息时-1即可;2.k<<1 >=n 走的完,先算出相向而行走完需要的时间,然后等,让雨水先积一会,然后时间刚好能走完再走。1.k<<1 <n 走不完,那选两段长度为k和最大的区间就行。
2026-05-09 22:13:46
227
原创 树形dp专项
现在,对于每个i→[1,n],位于节点i的人都说了一句话:“以我所在的节点为根的子树中,恰好有。• 对于任意一个节点i,如果该节点的人是诚实者,那么他陈述的数字ai必须等于其子树中诚实者的。一个“真假分配情况”是指为每个节点的人分配一个“诚实者”或“说谎者”的身份。//那么 该节点对说真话的人数贡献为1, 同时子树说真话人数等于a[u]-1。//那么该节点对说真话的人数贡献为0,同时子树说真话人数不能等于a[u]
2026-04-23 20:24:29
209
原创 2026“钉耙编程”中国大学生算法设计春季联赛(4)复盘
5.从0开始逐渐更新状态,更新当前状态的抑或和,如果抑或和为0则该状态是必败态,否则将当前状态与上预处理出来的最高位数的位存在状态,得到可能的后继状态,遍历所有后继状态,如果存在必败态,则当前为必胜态,否则为必败态。分割的判断:如果从某个点出发,按照八连通遍历搜索相同颜色的格子,能够同时到达右上/左下,则视为可分割,同时若到达起点/终点,也视为可分割。题面等价判断一种颜色是否会将(1,1)-(n,m)分割,将所有点和颜色收集,从1往上判断,如果该颜色不会分割,则输出该颜色;4.dp[0]为必败态。
2026-04-15 21:01:19
213
原创 The 2025 Sichuan Provincial Collegiate Programming Contest 复盘
其实这道题让我们觉得困难的原因是因为它有两个变量,如果变成仅对一个变量求最小值,这其实就是一个简单的完全背包问题;那么对于每一个C, 搜索与它之间相邻的点,是c则统计相邻S的个数,是p则统计相邻c个数,-1(去掉自己);因为M<=1000,val<=200,所以最终每个元素和的可能取值不会超过200 000,考虑对于每一种存在的a的和的取值,求出它的b的和的最小值,然后对二者乘积找最小值;,比较前后缀大小,确定该点为0/1的贡献大。将每个问号同时看成1,0,统计1的前缀/0的后缀。
2026-04-14 23:46:31
463
原创 The 6th Liaoning Provincial Collegiate Programming Contest - External 复盘
我们考虑第二种比赛对第一种比赛的影响,很显然是能力提升到b,那么我们只要把需求值小于b的所有比赛打完,这次比赛的结果就不会对第一组产生影响,这时我们只要判断此时的能力能否参加这场比赛,能参加就参加,不能则跳过看下一个;解释一下这么寻找的理由:对于每一个右端点,我们希望它向前寻找左端点构成的区间里面含有一个D,同时不含>D的数,那我至少需要找到上一个D存在的位置,同时这段区间不能有>D的数,至多找到上一个>D出现的位置后一位;我们知道,在mod m意义下的前缀和相同等价这两个前缀和直接的区间和%m==0;
2026-04-13 21:30:32
374
原创 2024湖北ICPC 复盘 ABEFGHJL
2.每本等级为k的书其实等价(1<<K)这样的一个数,相同相加进位,同时cost直接等价求和,而询问2也直接等价求和后的那个数k位往上的第一个0位;对于转移,显然的,只有特定位置能够炸到鱼,把这些位置处理出来,对于每个状态遍历,判断该位置是否还有鱼,然后得到下一个状态即可;接下来考虑最大化a*b,在a*sqrt(b)=定值的情况下,如果我们把a乘上k,b会相应的/k^2,从而使得a*b的值/k,具体的,对每一个位置,给4的大小,分别表示里面现在有几条鱼,dp[s]表示走到这个状态需要几颗炸弹,
2026-04-06 01:10:02
342
原创 「华为杯」2024 江苏省大学生程序设计竞赛 复盘
主席树的本质是在每个位置上开一个线段树,每个线段树都会在前的那一颗树上进行节点复用;可持久化线段树模板题;insert:在位置i。
2026-04-01 23:44:37
39
原创 2026“钉耙编程”中国大学生算法设计春季联赛(2)复盘
1.和为x的序列 有2^(x-1)个,对于从高到低的数位,贪心的从1开始考虑,如果当前的k大于由这个数开头的序列数,则把这个数+1,确认开头的数后,后面的序列种数会相应减少为2^(x-k),直到小于开头数确认下后面序列的种数,则该位数确定。1.令x=a|b,y=a&b, 因为ab=xy,又a+b=x+y(这个其实很好想,{0,1},{1,0}在|会变成1,&记录存在进位,二者等价),可知{x,y}={a,b},等价x=a,y=b | x=b,y=a;b取0,a只能取0, b取1,a可以取0|1,
2026-03-28 00:34:56
285
原创 2026“钉耙编程”中国大学生算法设计春季联赛(1)题解/复盘
题目给出的数据范围是1e5级别,考虑遍历max的情况下往两边扩展L,R,(这是一个基础的栈预处理,O(n)级别),开一个map记录每一个数出现的位置,对于一边的一个数,我们在另一边需要的数是确定的,二分查找另一边那个数对应的位置数组的边界,相减即时当前该数能够达成条件的个数。原式等价 x*((k+1)-1)^(x+y)/(k+1)= = (-1)^(x+y)x+y/(k+1)2.x+y %2 ==0 y+x mod k+1 ==0 等价 x+y==k+1;所以失败情况只有 x+y==k+1 的情况。
2026-03-22 22:03:13
339
原创 USACO18FEB Slingshot P
具体的,我们将所有的弹弓和询问全部放到名为point的数组中,标记它们的属性,对于xi<ai,从左到右扫描,遇到弹弓就将它 的右端点位置的xi+yi+ti(也就是我们当前维护的点对极值)更新,表示这个位置的y存在这样一个解,这个更新就是线段树的单点修改;拆点一个显而易见的好处是可以让每个询问给出的变量分到一起,也就是说,每次的答案仅取决于本次给出的值和满足当前条件的点对的最小值。如此,我们能够保证跟新的每一个点x合法,然后对于询问,分别考虑y的合法区间(y>b or y<b),在此区间查询即可;
2026-03-17 17:00:00
214
原创 HDU热身赛 3.13
考虑我们需要维护的三个操作,替换/添加/移除,如果正着写,对于每个元素,它可能会在后面遭到改变,很难统一维护,但我们反过来想,一个元素会变成什么样,取决于它后面会经历什么操作,所以我们将所有操作离线,反过来遍历。然后对于a*2,遍历,对于每个位置,遍历素数表,如果该值已经能够被转移,更新它通过现在这个数的下一次转移的数,令它能够由i位置转移。令g=gcd(a,b),有a=k1*g,b=k2*g,(k1+k2)*g=n,因为k1>k2>0,所以k1+k2>=3;答案为(n+m+1)/2。好经典(板子)的题。
2026-03-16 20:11:09
350
原创 2026寒假牛客 2.13
高中数学题,问题的本质是把连续的数字分成k段有几种分法,答案很显然是C(n-1,k-1),令最终要分t段,t&1时,很显然左右各有(t+1)/2段,等价于把左右的数分这么多段的方法数相乘再*2(左前/右前),tmod2=0,分别有t/2,t/2+1段,分别考虑左前/右前,可能数相乘即可。注意到w是整数,每次的修改值也是整数,这样我们就可以把每一次修改离散出来,具体的,假设我们一单位长度一单位长度的修改,对于每一个尺子来说,该次修改的贡献值是可以计算的,我们用优先队列维护这个贡献,每次取最大即可。
2026-02-16 20:35:01
666
原创 2026寒假牛客2.11(5)
2.pre[i]恰好大于pre[r]一点,所以问题变成怎么尽可能快的在之前的pre里面找数,很显然,二分,我们希望前面的数按照大小有序排列同时记录编号,所以选择set<Pii>st存数。由1,总和不变,所以最后每一个格子的值其实是确定的,我们拿这个值*n%2,就是原本行列应该具有的奇偶性,一一比对即可。对于每一个确定的r,我们希望这段区间的和在取modp意义下最大,两种可能,1.pre[i]最小。题目翻译过来就是有n,可以花2代价获得b,花7代价获得a,花8代价获得a+b,求最大代价。
2026-02-12 01:42:17
511
原创 2026寒假牛客2.5
B:需要注意的是,如果最大值是奇数个,那么只有最大值能够获胜,如果最大值有偶数个,那最大值必不可能获胜,但最大值可以通过和其他任意值相抵消的情况消掉任意值,最后再自己相互抵消,从而实现比最大值小的数都可以获胜。低维求的是到任意高维的最短路,那我们可以直接从高维往低维写,每降一维判断当前节点的dist是不是被跟新过,没有出-1,有出答案,然后把这一层的点压进去做多源最短路就行,因为是逐层更新,所以保证当前答案一定最优。我们考虑a2的贡献,很显然,只有当起点为a1+1--a2时,a2才有贡献。
2026-02-06 15:32:41
517
原创 2026寒假牛客集训 复盘/题解
更加具体的,我们需要维护每个点(在x时刻如果它在开始被染色最远能够覆盖的范围,在我的代码里面写作canreach,canr),然后从左往右依次检查,如果该点小于上一个染色点能够覆盖的范围,那么它需要在开局被染色,染色数加1,最后比较需要染色的点和k的大小即可;对于维护每个点能够到达的范围,一个误区是这个值是i+a[i]*t(我刚写的时候这么想,然后发现过不了样例),因为每个点染色后会影响后面的点,可能导致最终范围的变化(比如1 10,最后能到达的范围是11而不是2),怎么维护呢;//不改==false。
2026-02-04 17:08:13
506
原创 2024ICPC区域赛补题记录
遍历数组,设一个stack,空栈压入,非空栈找到比自己大的数前不断判断当前a+x能否整除栈顶然后弹出,有非法状态直接出false;每个黑色的格子把纸分块,贪心的遍历每一个块,从块的第一个红色的点开始铺,如果最后一个纸条越界,则往前移,如果往前移动到最后相对于前边界越界,则非法;题目给的条件翻译一下就是 相邻数直接呈倍数关系,我们做一个差分,把差分得到的abs值的gcd求一下,答案肯定是它的因数 ans|g。电梯只能做一个人,也就是说r-l的累加是必须要算的,我们尝试减少电梯去接人的花费。
2025-12-18 21:33:25
751
原创 2025NOIP T2
观察上面的图,发现了吗,只有Ⅳ,Ⅴ区间内的数才会被选择,其中Ⅴ内的数必被选中,我们可以将cost统一减去Ⅴ范围内数的个数,这样Ⅳ/Ⅴ区间内的数w就都变成了0/1;如果w=1,选中该数可能会导致后续只能选择另一个w=1的数(这个数可能很小)而导致无法选择一个w=2的数(这个数可能大于所选的两个w=1的数的和)Ⅲ:w=2时,他们的性价比一定比y低,不考虑,w=1时,在已经选择x的情况下,选择该数一定是最优解,而我们当前考虑的是错解,所以不考虑;Ⅳ:w=2时性价比小于y,不选,w=1时选择,cost=0/1。
2025-12-15 21:32:38
957
原创 2025ICPC补题
1.首先不考虑优化,考虑朴素的状态转移,i->j,需要付出的代价很显然是j的基础代价+(i&j)1的个数*连续使用增长代价,收益则是j的收益,代价小于要求,转移合法。水桶的合并只能在开局进行,但每次询问给出的时间不同,所以我们可以想成,随着时间的推移,越来越多的桶需要被合并成当前时间下的最优解;那很显然,随着时间的推移,小水桶/漏的多的水桶的贡献将会小于它的损失,那么它就需要被合并,怎么合并?需要注意的是,本题中的矩阵乘法采用的不是标准矩阵乘法的相乘累加,而是求状态转移的最大收益。填下update就行;
2025-12-09 20:50:08
790
原创 2024 沈阳 icpc
/ dp[mask][i]表示的是以i变为15结尾的最后状态,对j的影响是(15^i),也就是说这个状态下j应该是j^(15^i);if ((mask >> j) & 1) // 这一位必须是0。(mask >> i) & 1) // 这一位必须是1。if ((mask >> i) & 1) // 所有状态取最小。
2025-10-22 00:14:42
571
原创 好题分享--笛卡尔树上dp
因为我们要从最上层开始考虑,所以我们考虑用小根堆从左到右建树,树根就是最下层的格子,叶子节点就是最顶层的格子,左右就是格子顺序。其次,对于一个n*m的矩阵,我们的选择方式有C(n,k)*C(m,k)*k!但不得有任意两个数在同一行或者同一列。第二行包含 n 个整数,第 i 个整数表示从左至右第 i 列的层数。如图,给定一个由 n 列组成的表格,每一列的底部都是对齐的。输入第一行两个整数 n,k,表示表格的列数和相同数字的数量。首先,考虑对于一个k*k的矩阵,我们的选择方式有k!的填写是合法的,因为这两个。
2025-10-18 19:13:44
477
原创 模板/火车头
火车头cin.tie(0);i<=end;i<=8000;i++)i<=105;i++)j<i;return res;//转换后的串(转换后的串长度为 2n+2 ),形态:abc -> ^$a$b$c$&int p[N*3];
2025-10-14 14:33:37
1040
原创 国庆牛客联训 刷题记录 小刻都能看懂的题目解析
/本来应该有一篇icpc网络赛的复盘,但网上题解已经有好多完备的解法,而且那两场自己的状态也很差,基本上是只睡45个小时赶路到杭州打,所以打的也是依托//所以只能10.26成都站加油了//记录的应该算是一部分水题+区域铜+~银-的题(再难不会了desewa//太水的不放牛客1来源:牛客网。
2025-10-13 23:27:15
796
原创 week4 hdu6+nk7 复盘
pk(序列 𝑝p 中的元素各不相同,且在 [1,𝑛][1,n] 中),定义该方案的权值为:∑𝑖=1𝑚(max{𝑎𝑝1,𝑖,𝑎𝑝2,𝑖,…接下来包含 𝑡t 组数据,每组数据第一行三个整数 𝑛,𝑚,𝑘n,m,k(1≤𝑘≤𝑛≤10001≤k≤n≤1000 ,1≤𝑚≤131≤m≤13),依次表示矩阵 𝑎𝑖,𝑗ai,j 的行数和列数以及可以选择的行数。接下来的 𝑛n 行,每行包含 𝑚m 个整数,其中第 𝑖i 行第 𝑗j 列表示 𝑎𝑖,𝑗ai,j(0≤𝑎?
2025-08-06 23:18:03
770
原创 week3 hdu5 复盘
例如,对原序列 [2,4,0,3,1][2,4,0,3,1] 进行置换运算 𝑃=[2,0,4,3,1]P=[2,0,4,3,1] 之后得到的序列为 [0,2,1,3,4][0,2,1,3,4]。,𝑣𝑖,𝑘𝑖vi,1,…,vi,ki(1≤𝑣𝑖,𝑗≤1×1041≤vi,j≤1×104)分别表示每个材料的价值。对于第一组数据,一种方案是分别让 (1,2),(1,2),(1,3),(3,4),(4,5),(2,5)(1,2),(1,2),(1,3),(3,4),(4,5),(2,5) 去收款
2025-08-03 21:22:59
959
原创 week3 牛客6 C
推广到n项,((sum(ai[i,1,n]))^3=sum(a(i)^3)+6(1≤i<j≤n∑(I[i]2I[j]+I[i]I[j]2)+6*(1<=i<j<k<=n)(sum[i][j][k])合并同类,因为 所有[i]^2,[i]^3和[i]的值相同,所以最后f(p)^3= i=1∑nI[i]+61≤i<j≤n∑I[i]I[j]+61≤i<j<k≤n∑I[i]I[j]I[k]对于sum(1/(i*j)),考虑j=n,h2(n)=h2(n-1)+h1(n-1)/n。
2025-07-31 23:58:03
473
原创 week3 nk5 L
接下来的 n 行,每行包含 m 个数字(0 或 1),表示矩阵的初始状态。第 0 秒时的矩阵: 1 0 0 0 0 0 0 0 1 第 1 秒时的矩阵: 1 1 0 1 0 1 0 1 1 第 2 秒时的矩阵: 1 1 1 1 1 1 1 1 1。我们可以将二维的坐标通过i*m+j转化成一维,建立s和d的结构体,将里面的元素按照s的大小排序(从小到大),然后运用二分函数lower_bound和upper_bound找出x+y的上下界,然后遍历里面的每一个点,只要它的x-y满足限制,就可以出true;
2025-07-30 16:20:17
619
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1