favorite 1523f game cf

CF1003E Tree Constructing

很trivial的构造题 首先上来判掉一些显然无解的情况,然后考虑既然最后直径长为\(d\)那么不妨先搞一条长度为\(d\)的链来 考虑在链上接一些点使得直径不会变长,对于链上的某个点,它最多能接上的链的长度就是它到两个端点距离的最小值 不妨设计递归函数求解,设solve(x,dis,lim)表示在 ......
Constructing 1003E 1003 Tree CF

CF1437F

好神奇的 dp 题。 description 给定数组 \(a\),求其有多少个排列满足 \(y_i=\max(a_1,a_2,\dots,a_{i-1})\) \(\forall i\in [1,n]\cap\mathbb{Z},2a_i\leq y_i ~\texttt{OR}~ 2y_i\le ......
1437F 1437 CF

Game Bundles 题解

题目链接 Game Bundles 分析 很神奇的一道题目 先想想如何计算一个集合和为60的子集个数 可以想到通过 \(DP\) 求解: 记 \(f[i][j]\) 为前 \(i\) 个数字,和为 \(j\) 的子集个数 则 \(f[i][j]+=f[i-1][j-a[i]]\) \(f[i][a[ ......
题解 Bundles Game

CF367C Sereja and the Arrangement of Numbers

这题首先上来会发现题目中的很多信息都是假的,核心就是问要构造一个\(x\)个点的完全图至少要多长的序列 我们把序列中相邻的两个元素看作图上的一条边,则可以把问题转化为:给一个\(x\)个点的完全图,问至少要走多长的路径才可以遍历图中的所有边至少一次 简单讨论下会发现当\(x\)为奇数时,此时图中每个 ......
Arrangement Numbers Sereja 367C 367

CF723F st-Spanning Tree

小清新贪心+分类讨论,因为边的数组开小了WA了好久…… 首先我们贪心地选出不包含\(s,t\)的边,用这些边尽量地将除了\(s,t\)外的\(n-2\)个点连通 接下来考虑每个连通块,由于题目保证图初始连通,因此只有三种情况,即要么其中仅有和\(s\)相连的边;仅有和\(t\)相连的边;或者同时有向 ......
st-Spanning Spanning 723F Tree 723

CF260D Black and White Tree

刚开始想复杂了,后面再细想了下发现是个傻逼题 考虑一下构造策略,每次从两种颜色集合中分别取出一个数\(u,v\),考虑连边\(u\leftrightarrow v\),边权为\(\min(s_u,s_v)\) 并在每次操作后将\(s_u,s_v\)中较小的那个直接删掉,并把较大的那个值减去\(\mi ......
Black White 260D Tree 260

CF821D Okabe and City

也是一个很经典的优化最短路的题,感觉在暑假前集训做过类似思想的题来着 首先发现我们可以把所有有路灯的点以及终点看作关键点,很显然我们只关心关键点之间的边权以及最短路 不难发现对于两个关键点\(i,j\),如果\(i,j\)相邻,则它们之间有边权为\(0\)的边;否则若\(|x_i-x_j|\le 2 ......
Okabe 821D City 821 and

CF612E Square Root of Permutation

挺有意思的一个构造题,不过这种排列置换相关的套路感觉都太明显了 首先考虑把原图的每个置换环求出来,稍作观察会发现所有长度为奇数的置换环都可以很容易地构造出对应的\(q\)数组 但长度为偶数的置换环就不能单独构造了,但我们发现可以把两个长度相同且为偶数的置换环交错着合并来得到一个合法的\(q\)数组 ......
Permutation Square 612E Root 612

CF1137F Matches Are Not a Child's Play

哈人*3400,是不是贺过了个 1F (? 单点编号 \(\to max + 1\),动态维护 prufer 序列删除了哪些点。 看似不可做,但是不难发现我们一个点被更改其他点的相对次序不会改变,反而 \(x \to max\) 这条链的删除次序到了最后面。 然后我们以权值最大点为根,不难发现每次只 ......
Matches 1137F Child 1137 Play

CF424C的题解

简单题。CF 评分才 *1600。 可以直接先把 \(Q\) 拆成两部分。 \[\begin{aligned} \large a&=\oplus^n_{i=1}p_i\\ \large b&=\oplus^n_{i=1}\oplus^n_{j=1}\ \ \ (i\bmod j)\\ \large ......
题解 424C 424 CF

CF580B的题解

见到有单调性、有限制的区间问题,很自然地就会想到用尺取去做。 先按工资升序排序,然后套上尺取就行了。 不会尺取的可以根据这道题去学。 时间复杂度 \(O(n\log n)\)。 #include<cstdio> #include<algorithm> #define ll long long usi ......
题解 580B 580 CF

[题解]CF1881G Anya and the Mysterious String

思路 发现如果一个字符串中有长度大于等于 \(2\) 回文子串,必定有长度为 \(2\) 的回文子串或长度为 \(3\) 的回文子串,并且形如:aa 和 aba。 所以考虑用线段树这两种情况。维护一段区间的最左、次左、最右、次右的元素,同时用两个标记变量 \(f_1,f_2\) 分别表示这个区间中是 ......
题解 Mysterious String 1881G 1881

CF1542E2 Abnormal Permutation Pairs (hard version) 题解

Abnormal Permutation Pairs (hard version) 两个限制:字典序小、逆序对大,一个显然的想法就是确保一对关系,统计另一对关系。 确保哪一对呢?我们想了想,决定确保字典序小,因为字典序是可以贪心的。 具体而言,我们考虑两个排列自第 \(i\) 位开始出现了不同。这样 ......
题解 Permutation Abnormal version 1542E

CF568E Longest Increasing Subsequence 题解

Longest Increasing Subsequence LIS 问题有两种主流 \(O(n\log n)\) 解法,最常见的树状数组法,以及不那么常见的二分法。然后考虑本题,发现一个神奇的思路就是求出 LIS 后倒序复原出数组。 进一步思考后发现,因为本题是 LIS(Longest Incre ......
题解 Subsequence Increasing Longest 568E

CF1257E The Contest

用桶存,做一遍前缀和,令 \(b_{x,y}\) 表示序列 \(x\) 包含 \(1\sim y\) 的数字个数。考虑枚举第一个序列保留的前缀 \(1\sim i\),对于第三个序列,如果其保留了后缀 \(j\sim n(i<j)\),考虑哪些数需要被移掉,那么答案就是: \[b_{1,n}-b_{ ......
Contest 1257E 1257 The CF

CF914B题解

一道简单的博弈论。 思路 我们可以先记录每张牌的个数,如果这个牌的个数为奇数,则 Conan 胜利,如果全部为偶数,Agase 胜利。 证明 如果说所有牌为偶数,那么无论 Conan 取哪张牌,Agasa 都可以和他取一样的,最终让 Conan 失败。 如果不满足,那么 Agasa 会无法操作。 A ......
题解 914B 914 CF

games101一些问题及思考

games101一些问题及思考 1. 透视投影为什么z值变大 从透视投影矩阵可以看出z会变大,但从直观上怎么想呢。 想象一段向无穷远处延伸的铁轨,假设有100m,但照片中前一半明显不足50m,后一段明显多于50m,可以体会到近平面和远平面之间的点都会向远平面压缩,使得出现近大远小的情况。 2. 各个 ......
问题 games 101

题解 CF1651F【Tower Defense】

一个塔防游戏。 一共有 $n$ 个塔按 $1 \sim n$ 的顺序排成一列,每座塔都有魔力容量 $c_i$ 和魔力恢复速率 $r_i$。对于一座塔 $i$,每过一秒它的魔力 $m_i$ 会变为 $\min(m_i+r_i, c_i)$。每座塔初始时满魔力。 一共有 $q$ 个怪物,每个怪物有两... ......
题解 Defense 1651F Tower 1651

【题解 CF840C & P4448】 On the Bench & 球球的排列

On the Bench 题面翻译 给定一个序列 \(a(a_i\le 10^9)\),长度为 \(n(n\le 300)\)。 试求有多少 \(1\) 到 \(n\) 的排列 \(p_i\),满足对于任意的 \(2\le i\le n\) 有 \(a_{p_{i-1}}\times a_{p_i} ......
题解 amp Bench P4448 4448

CF350E Wrong Floyd

什么一眼构造题 首先要卡Floyd的关键就是存在某两个点\(x,y\),满足这两个点之间的所有最短路经过的点中(除\(x,y\)本身)至少有一个非关键点 因此很容易想到如下构造法,先随便找一个关键点\(K\),然后把所有非关键点和\(K\)连边(当然如果所有点都是关键点就显然无解) 接下来先随便连边 ......
Wrong Floyd 350E 350 CF

CF638D Three-dimensional Turtle Super Computer

什么大力爆搜题 不妨考虑枚举要拿掉的位置,考虑怎么检验它是某两个点之间必经之点 简单手玩一下会发现如果存在这么一条路径,那么我们一定可以把该路径的端点定为与要拿掉的点距离为\(1\)的点上(即与要拿掉的点上下左右前后\(6\)连通) 因此我们把这些点找出来后爆枚点对,判断路径是否唯一就直接爆搜即可 ......

CF73D FreeDiv

首先先把原图中的连通信息求一下,不妨设其中有\(tot\)个连通块,每个连通块的大小为\(sz_i\) 考虑第二步操作时我们需要连\(tot-1\)条边使得图连通,而每个连通块中只有\(\min(sz_i,k)\)个点可以参与连边 因此如果\(\sum_{i=1}^{tot} \min(sz_i,k ......
FreeDiv 73D CF 73

CF543B Destroying Roads

好经典的题,因为暑假前集训做过类似的思想的题所以知道怎么处理 这题由于要求最多的删去的边数,则等价于求最少保留几条边,很显然留下的边一定是最短路上的 但问题是如果两条路不相交的话很简单,可事实是两条路径可以重叠一些部分,这些边用了两次可能可以使答案变优 关于这种图上两条路径的题有一个经典结论,即两条 ......
Destroying Roads 543B 543 CF

CF513G3 Inversions problem

CF513G3 Inversions problem 更好的阅读体验 推式子题。 task 1 直接爆搜,统计每种结果的答案,最后加在一起除以总方案数。 task 2 数据范围变大,显然不能记录整个数组的状态,考虑拆位算贡献。设 \(f_{i,j,k}\) 表示交换了 \(k\) 步,\((i,j) ......
Inversions problem 513G 513 CF

CF557D D. Vitaly and Cycle

小清新分类讨论题 首先不难发现这题加边的上界就是\(3\),并且只有当图中一条边没有时才会取得,方案数就是\(C_n^3\) 而一条边不加的情况也很容易,可以先跑个染色看下有没有奇环,如果有的话就直接输出即可 而加两条边的情况也比较简单,当图中都是孤立边和孤立点时(即所有点度数均\(\le 1\)) ......
Vitaly Cycle 557D 557 and

CF1873B题解

这题其实可以数学方法差小积大解决。 差越小积越大,那肯定是让最小的数加一啦。将所有数的积除以最小值再乘上最小值加一。 #include<bits/stdc++.h> using namespace std; signed main(){ int T; cin>>T; while(T--){ long ......
题解 1873B 1873 CF

CF1868C Travel Plan 题解

原题 翻译 发现所有长度相同的简单路径的权值可能情况相同,且最长的简单路径长度为 \(O(\log n)\) 级别,考虑维护所有长度的简单路径在一棵树上出现的次数,每种简单路径的权值在所有树上出现的次数,相乘即使答案。 我们考虑长度为 \(x\) 的路径对答案的贡献,考虑枚举这条路径的贡献 \(k\ ......
题解 Travel 1868C 1868 Plan

【前缀和优化 dp】CF1542E1 Abnormal Permutation Pairs (easy version) 题解

CF1542E1 首先时间复杂度肯定是 \(\mathcal{O}(n^3)\) 的。 容易想到先枚举最长公共前缀,然后枚举 \(p_{len+1}\) 和 \(q_{len+1}\),再枚举逆序对数进行统计。 令 \(f_{i,j}\) 表示有 \(j\) 个逆序对的 \(i\) 阶排列的个数。 ......
题解 前缀 Permutation Abnormal version

【前缀和优化 dp】CF1542E2 Abnormal Permutation Pairs (hard version) 题解

CF1542E2 首先时间复杂度肯定是 \(\mathcal{O}(n^3)\) 的。 容易想到先枚举最长公共前缀,然后枚举 \(p_{len+1}\) 和 \(q_{len+1}\),再枚举逆序对数进行统计。 令 \(f_{i,j}\) 表示有 \(j\) 个逆序对的 \(i\) 阶排列的个数。 ......
题解 前缀 Permutation Abnormal version

【树上背包】CF1856E1 PermuTree (easy version) 题解

CF1856E1 发现题目的要求只需要相对的大小关系,考虑一个子树时,不妨令子树内部编号连续。类似于一个 dp,这样也可以更好地将信息由儿子转移到父亲。 设 \(u\) 的孩子为 \(v_1,v_2,\dots,v_k\)。由于每棵子树内的编号是连续的,令以 \(v_i\) 为根的子树的编号为 \( ......
题解 背包 PermuTree version 1856E