随笔分类 - atcoder
摘要:F - Transportation 一天遇到两道生成树的题目,还都不会做,菜哭的一天。 这题的做法是另外建两个点n+1,n+2,然后做生成树,因为我们只要前n个点联通就行,后面两个点不一定,那么枚举一下就行。 #include<cstdio> #include<algorithm> #includ
阅读全文
摘要:F - Find 4-cycle 显然就是在一个集合中枚举两个点,然后看在另一个集合中是否存在两个点与这个集合中的两个点都相连。 假设x是v1中的一个点,设它的两条出边是(x,a),(x,b),那么记录下f[a][b]=x,根据鸽巢原理,这样做是n^2的 #include<cstdio> #incl
阅读全文
摘要:G - 222 如果知道阶的相关知识,那么就是道板题。 一个显然的结论是k最多只能有一个2的因子,同时不能有5的因子,直接特判即可 那么剩余的情况我们可以保证(9p,10)=1,根据欧拉定理,在这种情况下一定有解。 那么问题转化为求最小的正整数x使得
阅读全文
摘要:D - Bracket Score 2 看了题解之后发现自己是弱智 如果能够猜到答案就是前n大-前n小,那么这题就解决了,直接用一个栈模拟匹配即可。 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #inc
阅读全文
摘要:E - Complete Binary Tree 首先我们只考虑x子树中的答案,非常明显,一定是一个连续的区间,那么我们只需要找到两个端点即可,左端点一直往左走即可,但是右端点要注意,如果走不了,如果左端点存在,说明n就是我们的右端点。 处理完子树之后往上跳即可,因为树高只有60 #include<
阅读全文
摘要:F - typewriter 直接容斥即可,每次选出它们的并集。 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #define fo(i,a,b) for (int (i)
阅读全文
摘要:F - +1-1x2 做过好几道类似的题了,跟之前杭电的一道题很像。 反正就是在一个y的位置上下抖一抖再除2就行。 #include<algorithm> #include<cstdio> #include<cstring> #include<vector> #include<queue> #inc
阅读全文
摘要:F - Components 一眼经典的树上背包 表示在x的子树中有s个连通块,选不选x的方案数 那么转移的话就是按照背包的转移即可 然后隐约记得这个是 的 但是一直TLE,后面发现是有一个地方写法有问题,应该在计算完当前子树后再更新的size,这样
阅读全文
摘要:F - Manhattan Cafe 暴力dp是显然的,f[s1][s2] 假设a,b是第i维中p,q两个向量分别对应的数。 那么分类讨论一下 不妨设 a<c<b \[=\sum f[i-1][s1+
阅读全文
摘要:F - Operations on a Matrix 初看起来感觉不是很好搞,主要是有赋值操作,我们需要知道的是最近一次在这个行上的赋值操作以及之间的贡献 那么我们离线处理,每个3操作都往前找一个最近的同行2操作,然后两个做差就能得到中间的和。 #include<algorithm> #includ
阅读全文
摘要:E - Just one 怎么感觉大家都这么懂啊。 结论就是基环森林才有解 证明的话大概是这样 首先不是同一个连通块的话则互不相干,分开讨论即可。 如果一个点的度为1,那么它的出边唯一确定,那么我们可以删去这些点,删去的同时会造成一些新的点度为1,不断扩展即可,同时注意判断无解情况,有点类似于拓扑排
阅读全文
摘要:E - Subsequence Path 第一眼看过去感觉又是什么魔改BFS的样子,但是感觉不好弄 但是往dp上想就很容易 表示走到i的最小代价,按着给出的序列顺序转移即可,转移是O(1)的。 代码非常简单 #include<cstdio> #include<algorithm> #
阅读全文
摘要:F - Integer Division 挺有意思的一道题, 贪心的做法就是排序之后,逐个加入,如果不能被之前的表示则加入 题解证明的话大概是这样 考虑第i个数选不选 首先加入前面选的数,如果能够表示当前的数,则必然不选 否则前面的数不能表示当前的数,假如我们不选 假设最后得到一个合法
阅读全文
摘要:[abc317f](https://atcoder.jp/contests/abc317/tasks/abc317_f) 一看就是数位dp,但之前还想错了,今天课上突然想到 之前想的是怎样构造保证能够整除 但实际上将余数也设计到状态中就行 其他就是基本的数位dp ```cpp #include #i
阅读全文
摘要:[abc295e](https://atcoder.jp/contests/abc295/tasks/abc295_e) 这题主要是一个小trick 那么后面这个就很好算了 ```cpp #includ
阅读全文
摘要:[abc302f](https://atcoder.jp/contests/abc302/tasks/abc302_f) 不是很难,但是还是有点绕 很明显是一个图的模型 但是边数很大 我们只关心每种数最早什么时候能够得到 对于每一种数,我们记录哪些集合包含它,每得到一个新的数,就用它来更新 ```c
阅读全文
摘要:[Warp](https://atcoder.jp/contests/abc265/tasks/abc265_e) 大概就是个dp f[n][x][y]表示走了n步,第一种走了x次,第二种走了y次。 不过写来写去发现都会TLE,N^3怎么会TLE呢? 后面发现原来是map的写法一直有问题, 比如判断
阅读全文