• 2024-07-12南外c++集训枚举题:关灯
    根据标题可知这道题一定是一道枚举题这道题考虑使用dfs,处理特殊处理第一层,每次加答案时选最优值。给出代码:点击查看代码#include<bits/stdc++.h>usingnamespacestd;intn,m;charmat[20][110];intdfs(intcnt,intpos,inttmp)//cnt:楼层pos:哪里的楼梯tmp走到楼梯
  • 2024-03-032024.3
    故事的角色在这里停止行进。也许并不算意外,虽然我不知道身体原因是否能作为失利的借口。不过在江苏紧迫的竞赛氛围里,我愈发觉得难以前进下去了。初三的时候从号爸跳槽到了南外。高二的几位同学待人都非常友善,非常感谢他们对我的帮助。在南外旁边的租房里,再于阳台上伫立一次。好
  • 2024-02-24南外集训 2024.2.23 T3
    Kubic素质如此,如何国家队?有一个初始为空的序列,对其进行\(q\)次操作(强制在线)。操作分为两种:\(1\;x\)表示在序列末尾插入一个\(x\)。\(2\;x\)表示询问当前序列中长度等于\(x\)的区间的价值之和\(\bmod998244353\)。定义一个区间的价值为中前\(m\)大的数的乘
  • 2024-02-15南外集训 2024.2.15 T3
    题目描述还能有错的?\(T\)组询问,每次给定\(n,k\),问:如果一个\(2n\)个数的排列所有偶数位置构成的子序列是单调递增的,那么说这个排列是好的。将一个好的排列按照顺序拆分成若干组,每一组个数都是偶数,形成的结构叫做一个城市。一个城市的价值是每个组内部的逆序对个数的乘积。求
  • 2024-02-14南外集训 2024.2.14 T3
    总觉得做过,但是就是想不起来在哪里做到的。有两个人一开始在一棵树的根节点,每秒钟两人都可以向下走一条边。任意时刻,一个人可以瞬间移动到另一个人所在的点上。求遍历树上的所有点所需最短时间。\(1\len\le5\times10^6\)注意到我们只需要访问所有的叶子。我们把其中一个人
  • 2024-01-19南外集训 2024.1.19 T3
    给定正整数\(m,n\)使得\(m|n\),求\([1,n]\cap\mathbbZ\)的所有子集中有多少和是\(m\)的倍数。\(1\leT\le10^4,1\lem\le10^7,1\len\le10^{18}\)相当于求\(F(z)=(1+z^0)(1+z^1)\dots(1+z^{n-1})\)的\(0,m,2m,\dots\)项之和。单位根反演可得\(Ans=
  • 2024-01-15南外集训 2024.1.15 T3
    纯粹技术性的题目。给定一个字符串的后缀数组以及对应的height数组的一部分(即一些height数组的位置是未知的,用\(-1\)表示),要求还原出一种可能的字符串。保证存在一种由\(26\)个小写英文字母构成的解。\(1\len\le10^6\)首先考虑没有\(-1\)的情况。注意到此时我们给
  • 2024-01-08南外集训 2024.1.8 T3
    题意给定一个序列\(a\),将之划分为两个子序列,使得两个序列前缀最大值的和之和最小。\(1\len\le5\times10^5,1\lea_i\le10^9\)做法首先DP很容易做到平方:考虑前\(i\)个数,其中一个子序列当前的最大值当然是前\(i\)个数的最大值,记另一个序列的最大值是\(j\),此时的最
  • 2024-01-05南外集训 2024.1.5 T3
    非常简单的一道题。要好好反思为什么没有做出来。题意给定一棵点带权的树,强制在线询问一条链上取恰好\(m\)个数按位与的最大值。\(1\len\le10^6,1\leq\le10^5,1\lem\le10,0\leV<2^{62}\)。解法考虑一个暴力:取出树链上所有点权,二分答案\(x\),则需要检查是否存在至
  • 2023-12-29南外集训 2023.12.29 T1
    首先枚举宝藏所在的点,设为根\(rt\),考虑如果在某个时刻访问了若干个点,但是没有确定宝藏位置,那么满足什么条件。首先求出这些点的LCA,设为点\(p\),\(p\)不可以是\(rt\)。我们发现这时候我们已经确认了宝藏到\(p\)的距离,而且知道它不属于p的哪些子树(所有存在被访问点的子树)。
  • 2023-12-25南外集训 2023.12.25 T1
    给定一个图,求\(s\)到\(t\)的最短路,其中路径的长度是其长度前\(k\)大边的长度和。\(n,k\le1000,m\le2000\)。做法枚举被算入的最小边权\(w\),所有小于\(w\)的边权都可以视为\(0\),而我们需要确保大于等于\(w\)的边至少走了\(k\)条。如何实现这一点呢?通过记录已
  • 2023-09-15【南外】DPS1-C
    /*树形DP,记f[i]表示覆盖以i为根的子树最少需要链的数量。记fl[i]=0/1表示当前i节点是否属于任意一条链。记res表示当前搜到节点x时,它有多少个儿子还不属于任何一条链。考虑贪心(不太会证明正确性)如果当前节点的res>=2,则可以选两个未连节点与x共同构成一条链,fl
  • 2023-09-15【南外】DPS1-A
    /*树形DP,记f[i][j]表示第i个节点,其子树中包含它的长度为j的链的数量。对于一个节点x,其有子节点V1,V2,...设当前做到Vi,则lst[i][...]表示做到Vi-1时f[x][...]的值。统计答案时,对于新增点Vi,假设我们已经跟新完了f(即f[x][j]加上f[Vi][j-1]),则答案的增加量为