首页 > 其他分享 >AtCoder Beginner Contest 287

AtCoder Beginner Contest 287

时间:2023-01-28 21:56:27浏览次数:94  
标签:AtCoder abc287 Beginner atcoder jp https contests submissions 287

纯纯手速场

C

首先这张图必须是一棵树,必有 \(M=N-1\)。

接下来只需求出树的直径,判断其长度(边数)是否为 \(N-1\) 即可。

https://atcoder.jp/contests/abc287/submissions/38384515

D

考虑算出来 \(A,B\) 表示 \(S,T\) 的最长公共前缀/后缀的长度,这个可以直接线性算出。

那么 \(x\) 符合条件的充要条件是 \(x\le A\) 且 \(|T|-x\le B\),于是就做完了。

https://atcoder.jp/contests/abc287/submissions/38391580

E

\(\text{Trie}\) 树板子题,真的不知道咋说,OI Wiki 上就有

可以参考:https://www.cnblogs.com/YunQianQwQ/articles/16054560.html

代码:https://atcoder.jp/contests/abc287/submissions/38394652

F

设 \(f(u,j),g(u,j)\) 分别表示:以 \(u\) 为根的子树,选/不选 \(u\) 时,得到 \(j\) 个连通块的方案数。

  • 如果不选 \(u\),\(u\) 的各个子树互相独立,因此只需枚举每个儿子做卷积,即 \(g(u,j)\times (g(v,k)+f(v,k))\to g(u,k+j)\) 。
  • 如果选了 \(u\),考虑 \(u\) 的某个儿子 \(v\),如果同样选了 \(v\) 那么连通块个数需要 \(-1\),否则不变。因此有 \(f(u,j)\times g(v,k)\to f(u,j+k),f(u,j)\times f(v,k)\to f(u,j+k-1)\)。

根据树形背包的经典结论,每两个点只会在 \(\text{LCA}\) 处贡献一次,总的复杂度为 \(O(n^2)\)。

https://atcoder.jp/contests/abc287/submissions/38401771

G

显然对于一次询问,我们应该取出前 \(x\) 大进行求和。

考虑设 \(c[i]=\sum_{j=1}^n[a_j=i]b_j\),即所有 \(\text{score}\) 为 \(i\) 的类型的 card 的上限之和。

用线段树维护序列 \(c\),每个节点维护区间内 \(c\) 的和与 \(i\times c[i]\) 的和;若要选 \(x\) 个数,在线段树上二分,看右儿子区间内 \(c\) 的和是否 \(\ge x\),如果是则递归进右子树,否则递归进左子树并加上右子树的 \(\sum i\times c[i]\)。

离散化一下,总的时间复杂度为 \(O((N+Q)\log (N+Q))\)。

https://atcoder.jp/contests/abc287/submissions/38409618

Ex

挖坑,待填

标签:AtCoder,abc287,Beginner,atcoder,jp,https,contests,submissions,287
From: https://www.cnblogs.com/YunQianQwQ/p/17071342.html

相关文章

  • Atcoder Beginner Contest 287
    赛时吃了三个法师,不过问题不大。赛时AB简单字符串处理。C中需要满足:\(m=n-1\)只有两个度数为\(1\)的点,剩下点的度数都为\(2\)。记得判连通!!D根据题目要求观......
  • AtCoder Beginner Contest 130
    AtCoderBeginnerContest130https://atcoder.jp/contests/abc130补补之前的A-Rounding#include<bits/stdc++.h>usingnamespacestd;intmain(){inta......
  • Atcoder ABC244E - King Bombee 题解
    原题:AtcoderABC244E-KingBombee题意给你一张图,从\(S\)到\(T\),经过\(k\)条边,经过\(X\)号点偶数次的方案数。做法设\(f_{i,j,k}\)表示经过\(i\)条边,......
  • AtCoder Beginner Contest 159
    A-TheNumberofEvenPairs相加为偶数只有偶加偶和奇加奇两种情况,其实就是在\(n\)个数中取两个(\(C\binom{2}{n}\)),在\(m\)个数中取两个(\(C\binom{2}{m}\))。B-String......
  • AtCoder Beginner Contest 126
    AtCoderBeginnerContest126https://atcoder.jp/contests/abc126A-ChangingaCharacter#include<bits/stdc++.h>usingnamespacestd;intmain(){int......
  • AtCoder Beginner Contest 162
    A-Lucky7大水题,模拟即可。#include<iostream>#include<cstdio>usingnamespacestd;intmain(){strings;cin>>s;if(s[0]=='7'||s[1]==......
  • AtCoder Beginner Contest 172
    A-Calc(abc172a)题目大意给定一个\(a\),输出\(a+a^2+a^3\)解题思路模拟即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=long......
  • 【最短路】Atcoder Beginner Contest 286----E
    题目:E-Souvenir(atcoder.jp)题解:首先这道题可以很容易看出来是求最短路。最开始自己是用bfs写的,出现了WA,TLE,RE等错误。因为对于每种情况会有Q次询问,如果每次询问都......
  • 【多重背包】Atcoder Beginner Contest 286----D
    题目:D-MoneyinHand(atcoder.jp)分析:经典的多重背包。用dp[i]表示i能否正好凑出。先复习一下多重背包。多重背包就是有N组物品,每组最多有k个,每组可以选多个。分组背......
  • AtCoder Beginner Contest 286 解题报告
    AtCoderBeginnerContest286解题报告\(\text{ByDaiRuiChen007}\)ContestLinkA.RangeSwap直接模拟交换过程即可时间复杂度\(\Theta(n)\)#include<bits/stdc++......