随笔分类 - 题目 / AtCoder
摘要:Part1:转化 转化为单蚂蚁和单方糖的二分图最大匹配 考虑霍尔定理经典推论,\(|V1|-\max_{S\in V1}(|S|-|N(S)|)\),其中 \(N(S)\) 表示与 \(S\) 节点有边的点集。 位置 \(x\) 的蚂蚁能匹配的方糖区间为 \([x-L,x+L]\) 一个直接的思路是
阅读全文
摘要:转化题意 你需要找出两个序列 \(x,y\),在满足下列条件的情况下最小化 \(\sum (x_i+y_i)\): 对于任意 \(1\leq i\leq N\),满足 \(x_i\geq X_i,y_i\geq Y_i\) 对于任意 \(1\leq i\leq M\),满足 \(\forall j,
阅读全文
摘要:题目大意 给定 \(N,M\),你需要求有多少个长为 \(N\) 的序列 \(A\),满足下列条件: \(0\leq A_i\leq 2^M(1\leq i\leq N)\) \(\text{popcount}(A_i\oplus A_j)\leq 2(1\leq i\leq j\leq N)\)
阅读全文
摘要:题目链接 解题思路 初步观察 首先,必定存在一个位置,使得环从那里断成链之后,答案不变。 对于一条链,操作两两之间,如果不是不相交,就是包含关系,不然必定不优。 具体做法 题目给出的 \(b+X_c\) 这个式子中,既有与区间长度 \(b\),又有和具体颜色有关的 \(X_c\)。 直接贪心我们难以
阅读全文
摘要:简单的操作分析题。 一些基础想法 首先,注意到直接怼着序列,不好计数。考虑按照值域从小到大计数。 假若不考虑边界(或者我们令 \(B_0=B_{N+1}=N+1\)),那么每次的段数是固定的。 具体的,元素 \(1\) 的所有数形成了 \(a_1\) 个不能相交的段,其中每个段两端都需要两个元素 \
阅读全文
摘要:这种题在想题的时候可以先随便找到一个做法再去优化,不要管复杂度,想多了容易混。 首先容易发现,这道题直接计数比较困难。所以我们想到了用容斥来解决这个问题。 但是容斥的方式可能比较多,可以多尝试然后选择最简便的方法。钦定 \(f_i\) 表示,我们强制 \(n\) 个数中的 \(i\) 个出现次数不超
阅读全文
摘要:题目链接 很显然,按照右端点从小到大排序,对于每段区间尽量地贪心放在靠右的位置即可。 中间用 std::set 维护当前还是 \(0\) 的位置,以及树状数组维护区间 \(1\) 的个数。 点击查看代码 #include <bits/stdc++.h> #define FL(i, a, b) for
阅读全文
摘要:题目链接 题目本质就是对一个多项式 \(F\) 进行等比数列求和得到 \(G\)(\(F_i\) 表示 \(i\) 在序列 \(A\) 中的出现次数),求 \(G\) 所有下标 \(>0\) 的位置的权值和。 显然,\(M\) 固定就可以直接做了。但 \(M\) 不固定,所以我们只能暴力枚举 \(M
阅读全文
摘要:题目链接 首先观察到这个形式,容易发现它和常规的卷积不同点就在于:题目给出的求和定义中,\(\sum\) 符号下面的式子是 \(i+j<N\) 求和而不是 \(i+j=N\)。 为了方便计算,我们引入: \[G_n=\sum_{i+j<N}F_iF_j \]我们发现,假设所有 \(F_{1\sim{
阅读全文
摘要:考虑从小到大加入每种权值,同时维护一个状压数组 $f$。 具体的,我们对于在输入矩形中出现过的数,直接转移;否则枚举当前的数放在哪一位,判断合法性之后转移就行了。 判断合法其实有一种比较简便的方法,每次加入一个数时,如果他在某个三元组的中间位置,且左右的点恰好填了一个,那么就证明这个三元组是单调的,
阅读全文
摘要:题目链接 关于这类问题的一个经典的套路就是:利用差分将区间翻转转换为点对翻转。 既然操作差分了,那么原序列初始时也得以差分的形式进行表示。我们发现,原序列中一定恰好有 \(4\) 个 \(1\)。 根据题目,翻转操作就是对两个端点采取异或运算。不妨把所有这样的两个端点连上一条边权为 \(r-l+1\
阅读全文
摘要:关于这类问题的一个经典的套路就是:利用差分将区间翻转转换为点对翻转。 既然操作差分了,那么原序列初始时也得以差分的形式进行表示。我们发现,原序列中一定恰好有 $4$ 个 $1$。 根据题目,翻转操作就是对两个端点采取异或运算。不妨把所有这样的两个端点连上一条边权为 $r-l+1$ 的边,我们发现,一
阅读全文
摘要:[原题链接](https://atcoder.jp/contests/arc100/tasks/arc100_c) 不难发现我们可以处理出每个状态所有子集中 $a_i$ 的最大值和次大值,用一个 `pair` 维护,跑一遍 $\text{SOSDP}$,这时每个状态的权值就是最大值加次大值,最终输出
阅读全文
摘要:我么采用区间染色思维去做这题(把 $P_i$ 看做一种颜色)。 钦定最终序列为 $P'$,以及 $l_i,r_i$ 分别为位置 $i$ 左右离 $i$ 最近的 $j$(满足 $P_j>P_i$)。 尝试思考每个颜色最后会覆盖到哪些位置。会发现 $[l_i,r_i]$ 其实就是 $i$ 能覆盖到的极大
阅读全文
摘要:考虑二分答案。于是现在问题转化成了:$S$ 的中位数是否 $\geq x$($x$ 为二分的值)。 可单纯这样,还没法直接做。继续转化:求出中位数 $\geq x$ 的区间个数。假设我们求出了这个区间个数(设它为 $cnt$),通过数学归纳,不难得出 $S$ 的中位数 $\geq x$ 当且仅当 $
阅读全文
摘要:考虑枚举 $Y$。 根据 $Y$ 的定义,有:序列中比 $Y$ 小的数都不能被选到长为 $K$ 的区间内。所以我们不妨用那些 $<Y$ 的数把序列分割成几个连续段去处理。 有了连续段的性质之后,我们暴力处理出每个元素所处的连续段以及连续段的长度。之后再从小到大枚举 $X$,每次看看所有 $A_i=X
阅读全文
摘要:不妨采用一种常见的套路:我们把每个点的点权定义为它周围边的边权异或和。那么修改一条路径就转化为了修改两个点,最终的答案就是让所有点的点权都为 $0$。 我们难以找到直接贪心的策略。但 $0\leq a_i\leq 15$,考虑对于每种权值进行状压——先把权值相同的点两两消掉。在此之后,每种权值的点只
阅读全文
摘要:假若 $\forall S_{i,p_i}>0$,显然可以直接 $\text{DP}$: 状态:$f_i$ 表示至少得 $i$ 分的期望代价。 转移: $$ f_i=\min_{j=1}^n(C_j+\frac{1}{p_j}\sum_{k=1}^{p_j}f_{\max(i-S_{j,k},0)}
阅读全文
摘要:首先,不难得出选 YES 答对的概率是 $\frac{N}{N + M}$,选 NO 答对的概率是 $\frac{M}{N+M}$。 于是我们有如下结论: 假设 $N > M$,我们必定选 YES;相反 $M > N$,则必定选 NO。 由于 YES 和 NO 没有本质之分,同时出于简化问题的考虑,
阅读全文
摘要:思路 本题的线段树分治做法显然:维护每个元素存在的时间段,然后每进入线段树的一个节点时在 Trie 树上花 $\log V$ 的时间求出已有元素与它的最小异或值,放入一个堆中。离开一个节点时在堆中删除之前加入的最小异或值。 可删除堆实际上要用两个普通堆维护,代码如下: struct Large_Ro
阅读全文

浙公网安备 33010602011771号