【题解】Atcoder ARC#96 F-Sweet Alchemy】的更多相关文章

首先,我们发现每一个节点所选择的次数不好直接算,因为要求一个节点被选择的次数大于等于父亲被选择的次数,且又要小于等于父亲被选择的次数 \(+D\).既然如此,考虑一棵差分的树,规定每一个节点被选择的次数为 \(x\),表示节点实际上被选择的次数是父亲被选择的次数 \(+x\).显然,这个 \(x\) 是小于等于 \(D\) 的.分析这样我们发现,选择了一个节点实际上对应子树内的所有节点的选择次数均增加,所以我们重新定义选择一个节点的价值为子树内(含自身)节点的个数,而代价则是子树内所有代价的总和…
题面 题目大意: 给你\(m\)张椅子,排成一行,告诉你\(n\)个人,每个人可以坐的座位为\([1,l]\bigcup[r,m]\),为了让所有人坐下,问至少还要加多少张椅子. Solution: 为什么加椅子?我们可以在最左边或最右边一直加直到人人都有座位. 首先这道题目抽象成二分图很简单,然后我们可以只要求解出人与座位的最大匹配是多少,总人数减去即可,但跑二分图最大匹配显然会超时,我们就可以往霍尔定理方面想. 然后你还需要知道一个霍尔定理推论:假设某个人的集合为\(X\),这个集合所对应的…
题目 (可能有点长,但是请耐心看完,个人认为比官方题解好懂:P) 首先需要注意,对于任意节点i上的一个棋子,如果在一种走法中它走到了节点j,另一种走法中它走到了节点k,那么这两种走法进行完后,棋子占据的节点集合不可能相同,因为在这两种走法中,节点i必有两个子树中的棋子数量不同.所以,题目中的"被占据的集合唯一"等价于"每个棋子走向的节点唯一". 根据题意,一个初始状态合法当且仅当这个状态可以进行任意次操作,且进行k步操作后,接下来一步操作唯一(不管这样走之后,是否还…
题目 建图很妙,不会. 考虑每一对要求合法的巫师(x,y),他们两个的\(a\)必须都大于\(min(b_x,b_y)\).所以在输入的时候,如果\(a_x\)或者\(a_y\)小于\(min(b_x,b_y)\),可以先把\(a_x\)和\(a_y\)提升到\(min(b_x,b_y)\)(以后的a数组都指做过这步操作的).接下来如果\(max(a_x,a_y)\geq max(b_x,b_y)\),那么这一对已经符合要求,可以直接不管.接下来只考虑需要管的. 发现每一对需要管的(x,y),两…
$n \leq 50$的树,每个点有权值,现要选点(可多次选一个点)使点数尽量多,如下限制:选的总权值不超过$C \leq 1e9$:$c_i$表示$i$选的次数,$p_i$表示$i$的父亲,那么$c_{p_i} \leq c_i \leq c_{p_i}+D$,$D \leq 1e9$是给定常数. 看到这种奇怪不等式很讨厌嘛,差分一下,$d_i=c_i-c_{p_i}$,$d_1=c_1$(1是根),$d_i$表示$i$比$p_i$多选多少.这样一来就每个点都要比父亲多,那我的$0 \leq…
题目 观察当k固定时答案是什么.先假设每个节点对答案的贡献都是\(\binom{n}{k}\),然后再减掉某个点没有贡献的选点方案数.对于一个节点i,它没有贡献的方案数显然就是所有k个节点都选在i连出去的某一个子树内的方案数.枚举节点i,把i连出去的每一个子树的size都加入一个序列c,则答案为\(\binom{n}{k}\cdot n-\sum_{i=0}^{|c|-1}\binom{c_i}{k}\). 考虑\(k=1\cdots n\)的情况: \(ans_k=\binom{n}{k}\c…
[atcoder contest 010] F - Tree Game Time limit : 2sec / Memory limit : 256MB Score : 1600 points Problem Statement There is a tree with N vertices, numbered 1 through N. The i-th of the N−1 edges connects vertices ai and bi. Currently, there are Ai s…
洛谷题面传送门 & Atcoder 题面传送门 由于再过 1h 就是 NOI 笔试了所以题解写得会略有点简略. 考虑差分,记 \(b_i=c_i-c_{fa_i}\),那么根据题意有 \(b_i\le d,i=2,3,4,\cdots,n\),而 \(b_1\) 则没有任何约束条件.而如果我们令某个 \(b_i\) 加 \(1\),其余 \(b_i\) 均不变,那对应到原 \(c\) 序列上的操作效果就是 \(i\) 子树内的 \(c_j\) 加 \(1\),其余 \(c_j\) 不变,因此预处…
点我看题 A - Max Mod Min 非常诈骗.一开始以为要观察什么神奇的性质,后来发现直接模拟就行了.可以证明总操作次数是\(O(nlog a_i)\)的.具体就是,每次操作都会有一个数a被b取模,然后变成a%b.注意到a%b是\(\leq \frac a2\)的,并且a被操作之后会变成整个数据最小的数,作为下一轮的b.所以把原数组排序后,最小值的位置是不断往左移的,每次移动1个位置,直接模拟即可. 时间复杂度\(O(nlog a_i)\). 点击查看代码 #include <bits/s…
Atcoder刷不动的每日一题... 首先注意到一个事实:随着 \(l, r\) 的增大,\(f(r) - f(l)\) 会越来越小.考虑暴力处理出小数据的情况,我们可以发现对于左端点 \(f(l) <=  7\) 的情况下,右端点的最大限度为 \(\frac{10^8}{8} + 10^7\) .这个范围并不大,可以直接用 two-pointer 处理出来. 那么这部分的数据和后面的数据有什么不同呢? 当 \(f(l) > 7\) 的时候,\(f(r) - f(l) <= 1\).那么…
再次膜拜此强题!神级性质之不可能发现系列收藏++:首先,对于长度<=3的情况,我们采取爆搜答案(代码当中是打表).对于长度>=4的情况,则有如下几条玄妙的性质: 首先我们将 a, b, c 三个字母看做 0, 1, 2.发现(不知道怎么发现的)当我们做出一次变换之后,数列的和在模意义下是不改变的.(*启示:很多关系好像都和取模之后的某些东西有关,例如食物链,此题,and so on). 那么:当一个序列 T 可以由 S 转化过来时,T必须满足如下几条性质: 1.T的各位字母之和与S的各位字母之…
[算法]数论,二分图最大匹配 [题意]有无限张牌,给定n张面朝上的牌的坐标(N<=100),其它牌面朝下,每次操作可以选定一个>=3的素数p,并翻转连续p张牌,求最少操作次数使所有牌向下. [题解] 1.定义bi,当ai和ai-1的朝向相同时,bi=0,否则bi=1.特别的,a0朝向下. 则问题转化为:给定01序列b[],每次选L(正数)和P(奇素数),翻转bL和bP,求最少操作次数使序列全0. 这么转化的关键在于差分,对于区间翻转,区间内的点bi都不会变化,只有区间左端和区间右端+1变化,将…
点我看题 昨天刚打的ARC,题目质量还是不错的. A - Equal Hamming Distances 对于一个位置i,如果\(S_i=T_i\),那么不管\(U\)的这个位置填什么,对到\(S\)和\(T\)的海明距离增量都是相同的,所以这种位置一定填\(0\)更好:否则,这个位置填\(0\)或\(1\)分别可以给到\(S\)或到\(T\)的海明距离增加1,所以满足\(S_i=T_i\)的i的个数必须是偶数,否则一定无解.令这样的i的个数为x.从左到右遍历所有这样的i,尽量把\(U_i\)填…
……没啥可说的.最大权闭合子图,跑下dinic就好了…… #include <bits/stdc++.h> using namespace std; #define maxn 500000 #define int long long #define INF 99999999999LL int n, sum, S, T, lev[maxn]; int read() { , k = ; char c; c = getchar(); ; c = getchar(); } + c - ', c = g…
哈哈~自己做出来的E题!(虽然这题被机房大佬强D极水).最开始神经错乱,写了个完全不对的贪心,竟然只错了4个点(。•ˇ‸ˇ•。) 可以发现,一个节点的子树内部和他颜色相同的节点权值和 是固定的,那么不一定的就是另外的那个颜色的权值和了.而由于这个图上权值可以从 0 开始取值,显然越小越好.这样就可以dp啦. 其实我这个里面多了一个维度,就是记录当节点为黑色/白色时怎么怎么样,但其实这两个状态完全对称,根本没必要再多开一个维.但我就懒得改啦~ #include <bits/stdc++.h> u…
点我看题 题目质量一言难尽(至少对我来说 所以我不写D的题解了 A - mod M 发现如果把M选成2,就可以把答案压到至多2.所以答案只能是1或2,只要判断答案能不能是1即可.如果答案是1,那么M必须是所有任意两个数的差的GCD的因子,只要检查这个GCD是否是1即可.实现的话之间取所有相邻两个数的GCD就行了. 时间复杂度\(O(nloga_i)\). 点击查看代码 #include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<n;++…
点我看题 A - Three Cards 先把所有数按位数从多到少排序,答案的位数一定等于位数最多的三个数的位数之和\(tot\).对于每个i,把有i位的数排序,并记录每个i的排序结果.最后枚举答案中三个数最靠前的数\(a_i\),然后枚举第二个数的长度\(lenj\),取长度为lenj的数中最大的.如果这个最大的数就是i,那就取第二个.第三个数的长度就是\(tot-leni-lenj\),仍然是取这个长度中最大的数即可. 时间复杂度\(O(7 \cdot n)\). 点击查看代码 #inclu…
觉得我的解法好简单,好优美啊QAQ 首先想想暴力怎么办.暴力的话,我们就枚举左右端点,然后显然每张购物券都取最大的值.这样的复杂度是 \(O(n ^{2} m)\) 的.但是这样明显能够感觉到我们重复计算了很多东西,因为区间 \((l, r)\) 的答案与区间 \((l + 1, r)\) 的答案并不是独立的. 我们可以考虑一下扫描线的做法.用一根扫描线从右往左扫左端点,同步维护所有以 \(l\) 为左端点的区间.由于我们现已经求出了所有以 \(l + 1\) 为左端点的区间答案(这里的答案指从…
自己做出来固然开心,但是越发感觉到自己写题的确是很慢很慢了……往往有很多的细节反反复复的考虑才能确定,还要加油呀~ 这道题目的突破口在于正难则反.直接求有多少不相交的不好求,我们转而求出所有相交的.我们先预处理出由 \(S\) 到 \(T\) 的最短路图(跑一边Dijkstra,所有的最短路径构成的图),显然可以顺便处理出 \(T\) 到 \(S\) 的.然后这个图是一个拓扑图,满足的性质就是从 \(S\) 点出发的任意一条路径终点均为 \(T\) 且为二者之间的最短路.拓扑图dp对于每个点我们…
第一次用霍尔定理做题..简单的来说,就是判断一张二分图上是否存在完美匹配,只需要证明对于 \(a\) 集合中的任意 \(k\) 个点来说,都与 \(b\) 集合中的 \(k\) 个点有边相连.如果不满足,那么最大匹配数就是两个集合中有连边的点数最大的差. 这道题目二分图匹配的解法是非常显然的,让 \(i\) 点和对面的 \(1 ->  l[i]\), \(r[i]  ->  m\) 点连边,判断是否存在完美匹配即可.但点数太多了,我们考虑使用霍尔定理来求解.如果我们固定右边选择的点为 \(1-…
好zz啊我……(:д:) 首先我们可以删掉所有只有黑色节点的子树(一定不会遍历到), 且注意到每一个点你一定只会经过一遍.然后又考虑如果起点和终点相同,那么总次数实际上已经固定了:就是遍历整棵树(每一条边都需要经过两次),以及各点需要的改变颜色的额外花费.这个是可以愉快地 \(O(n)\) 统计的.再想起点和终点不相同的情况呢?其实就是可以让一个节点到一个叶子节点所经过的次数减少一次.一个本来需要额外花费的点,现在少经过了一次,既少走了一条路,又少改了一次颜色:而本来不需要的点, 少走的路和改变…
[题目]F - Leftmost Ball [题意]给定n种颜色的球各k个,每次以任意顺序排列所有球并将每种颜色最左端的球染成颜色0,求有多少种不同的颜色排列.n,k<=2000. [算法]计数DP [题解]只看黑体字部分即可. 自己考虑了几种计数方案,都不能实现.一种从左到右,但要记录每种球剩余多少,不可行.一种从右到左枚举白球包含区间填充,但因为只看白球,每种颜色没有关键球,会有重复统计的问题. 计数的关键在于白球的原色不重要以及每种颜色关注最左端的球(这里不含变成白球的球). 本题既然nk…
[题目]F - Many Easy Problems [题意]给定n个点的树,定义S为大小为k的点集,则f(S)为最小的包含点集S的连通块大小,求k=1~n时的所有点集f(S)的和取模924844033.n<=2*10^5. [算法]排列组合+NTT [题解]考虑每个点只会在k个点都在其一个子树时无贡献,即: $$ANS_k=\sum_{x=1}^{n}\binom{n}{k}-\sum_{y}\binom{sz[y]}{k}+\binom{n-sz[y]}{k}$$ 令$cnt_i$表示满足s…
[题目]F - Yakiniku Restaurants [题意]给定n和m,有n个饭店和m张票,给出Ai表示从饭店i到i+1的距离,给出矩阵B(i,j)表示在第i家饭店使用票j的收益,求任选起点和终点的最大(收益-代价).n<=5000,m<=200. [算法]单调栈+矩阵差分 [题解]直接枚举区间,很难同时计算m张票,我们反过来考虑每个B(i,j)的贡献. 对于B(i,j),令x为满足x<i,B(x,j)>B(i,j)的最大的x,令y为满足y>i,B(y,j)>B(…
题目传送门:ARC090E. 题意简述: 给定一张有 \(N\) 个点 \(M\) 条边的无向图.每条边有相应的边权,边权是正整数. 小 A 要从结点 \(S\) 走到结点 \(T\) ,而小 B 则相反,他要从结点 \(T\) 走到结点 \(S\) . 小 A 和小 B 走一条边需要的时间都是这条边的边权,不论方向. 问有多少种走法,使得他们俩都走了最短路,但是他们不会相遇,这里相遇指的是在点上或者在边上相遇. 答案对 \(10^9+7\) 取模. 题解: 用 Dijkstra 算法求出以结点…
[链接]F - Sandglass [题意]给定沙漏A和B,分别装着a和X-a的沙子,开始时A在上B在下,每秒漏1,漏完不再漏.给定n,有n个时刻ai沙漏倒转.给定m个询问,每次询问给定初值a和时刻t,求A中沙子量. [算法]数学(函数) [题解] 先不考虑时刻,令ft(a)表示沙子初值a时,当前A中的沙子数.(x轴是初值a,y轴是沙子数num) 时刻为0时,显然是一条从0出发斜率为1的直线. 若A在上,则每过1s,整段函数都下移一个单位,碰到y=0则变成平的. 若A在下,则每过1s,整段函数都…
传送门:http://arc082.contest.atcoder.jp/tasks/arc082_c 本题是一个平面几何问题. 在平面直角坐标系中有一个n元点集U={Ai(xi,yi)|1≤i≤n}.考虑以U的子集S中的点为顶点围成的凸多边形P,若这个凸多边形P内(含边界)的点数为k,则这个子集S的权值为f(S)=2k-|S|.求所有子集S的权值之和$\sum_{S\subseteq U}f(S)$(对998,244,353取余). 定义一个点集上的凸包运算H:G→S.即:平面上的一个点集G,…
小兔的话 欢迎大家在评论区留言哦~ AtCoder Beginner Contest 168 A - ∴ (Therefore) B - ... (Triple Dots) C - : (Colon) D - .. (Double Dots) E - ∙ (Bullet) 简单题意 小兔捕获了 \(N\) 条不同的沙丁鱼,第 \(i\) 条沙丁鱼的 美味程度 和 香味程度 分别是 \(A_i\) 和 \(B_i\) 她想在这些沙丁鱼中选择 一条 或者 多条 放入冷冻箱:但是必须保证沙丁鱼的选择是…
题目 首先还没有安排座位的\(m-k\)个人之间是有顺序的,所以先把答案乘上\((m-k)!\),就可以把这些人看作不可区分的. 已经确定的k个人把所有座位分成了k+1段.对于第i段,如果我们能求出这一段恰好额外坐j人时的代价总和\(f_{i,j}\),并令\(f_{i,j}\)的普通生成函数为\(F_i(x)\),答案就是\(\prod F_i(x)\)的\(m-k\)次项系数. 先考虑k+1段中两边都有已经确定的人的k-1段.对于每一段i,枚举其中额外坐的人数j,现在考虑求出\(f_{i,j…
Problem \(\mathrm{Code~Festival~2017~Final~J}\) 题意概要:一棵 \(n\) 个节点有点权边权的树.构建一张完全图,对于任意一对点 \((x,y)\),连一条长度为 \(w[x] + w[y]+ dis(x, y)\) 的边.求这张图的最小生成树. \(n\leq 2\times 10^5\) Solution 在操场上晒太阳时想到的做法,求 \(\mathrm{MST}\) 可以使用另一种贪心算法:每次找到每个点连出去的最短的边,并将其合并,一次是…