上一页 1 2 3 4 5 6 ··· 26 下一页
摘要: 计数 我们可以发现直径上的才会和其他点构成直角 我们处理出有多少条直径 随即思考如何计数 定义 d 为 直径对数 n,m 点数 颜色数 sy 除直径外剩余点 要是直径上的不同 : m(m-1) ^ d 选出不同颜色对个数 * 其他点任意颜色 m^sy 要是直径上颜色相同 那么这个颜色只能是这两个点 阅读全文
posted @ 2023-12-08 21:26 ycllz 阅读(8) 评论(0) 推荐(0)
摘要: 玩一下样例就能知道 这个是和 每个seg的最大间隔相关 为了好写我们可以直接写成元素间隔 这样我们用两个multiset维护元素间隔以及元素即可 注意删除的时候我们只删一个值 需要删指针 还有考虑长度为1的情况 multiset<int>st,st1; void Erase(int x){ auto 阅读全文
posted @ 2023-12-07 21:03 ycllz 阅读(3) 评论(0) 推荐(0)
摘要: 调到了天亮。。。。 很一眼 就是线段树区间加 然后回文串只有两种类型 aa aba 所以我们维护的信息就是 l r 最左边两个字母ls[2] 最右边两个字母rs[2] 是否发现回文串st 最重要的来了 我们不能初始化次左 次右 为当前字母 我们应该初始化为-1 然后注意pushdown不要影响他们 阅读全文
posted @ 2023-12-07 04:43 ycllz 阅读(31) 评论(0) 推荐(0)
摘要: 111 发现要是所有的l r求和 L R 的差距>n 我们总可以找到一个x不在n个不同的aij里 然后我们知道L R 的差距不大于1e5 我们枚举这个最终的个数为now 我们钦定选满所有的非now的元素 看是否差一些元素达到now 当然维护过程中我们要注意l[i] r[i]的限制 但是我们枚举now 阅读全文
posted @ 2023-12-07 01:22 ycllz 阅读(17) 评论(0) 推荐(0)
摘要: 111 排序之后 我们可以枚举最大值 因为之前的任意两个gcd都不能超过这个最大值 但是 我们每次往下枚举 就要加入这个最大值 我们可以枚举他的因子 要是之前出现过 那么这个因子的贡献显然就可以求出来 但是这样有可能 多算了贡献比如 20可能算到 20 也算了 2 我们设sum_i 表示gcd为i的 阅读全文
posted @ 2023-12-06 16:29 ycllz 阅读(8) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2023-12-05 19:23 ycllz 阅读(1) 评论(0) 推荐(0)
摘要: 111 感觉写的好多都是2000分 dp + 路径 这个dp 很明显发现只和 行相关 然后我们发现每行最多俩个 那么肯定就是ababab这种交叉 dp i a b 就是我们第i行选了 a b 交叉的min 转移也是26*26 预处理 cost i a b 作为每行的转移代价即可 最后要注意就是m== 阅读全文
posted @ 2023-12-04 21:25 ycllz 阅读(10) 评论(0) 推荐(0)
摘要: 111 发现d(x)只有0-9的值 我们可以把按d(x)来分类 发现要只计算 我们就可以枚举d(C)d(a)d(b)贡献就是 这三个任选 要是有前面限制呢 我打了一下表 发现要是AB=C 那么肯定满足后面 这样我们就只用枚举C然后算他有多少对因子即可 然后发现C是1-n 连续的 可以直接枚举因子A 阅读全文
posted @ 2023-12-04 19:55 ycllz 阅读(7) 评论(0) 推荐(0)
摘要: 提炼 首先看到24 那无疑是状态压缩 这样我们dp[1<<24]就是 收集到state状态的min 关于转移 我们需要枚举当前状态下的两个0位 复杂度显然是2424(1<<24)级别的 虽然有剪枝 但是 我们仔细一想 我们的答案 不需要 任何的顺序 证明我们可以随便拿出最优的一组即可 我们找到第一个 阅读全文
posted @ 2023-12-04 16:44 ycllz 阅读(8) 评论(0) 推荐(0)
摘要: 提炼 显然我们可以把每一段拆开来单独考虑 我们该段有 A^len 选择 右边肯定只要不是相同 我们的集合就+1 Alen*(Alen -1) 当然要是相同也要算1 A^len 中间当然就是随便选啥都可以 void solve() { int n,m,A;cin>>n>>m>>A; vector<in 阅读全文
posted @ 2023-11-30 20:51 ycllz 阅读(10) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 ··· 26 下一页