09 2019 档案
摘要:"传送门" C Minimization 第一次可能有多种选择,我们枚举所有的选择,然后两边贪心取即可。 Code D Snuke Numbers 这个就是打表找规律...但规律也不是很好找,这个规律是变换的规律,可能一次加上$10^i$,也可以加上$10^{i+1}$,两个判断一下即可。 Code
阅读全文
摘要:"传送门" C Cover 题意: 给出一张无向图,现在问最少多少次“一笔画”能够覆盖所有的边,并且输出方案数。 思路: 在无向图中,存在欧拉路径当且仅当所有点度数都为偶数或者只有两个点的度数为奇数并且一个点为起点一个点为终点。 因为一次“一笔画”最多消掉两个奇数点,所以最少的次数就为$max(\f
阅读全文
摘要:"传送门" C Linear Approximation 题意: 求 $$ \sum_{i=1}^nabs(A_i (b+i)) $$ $A_i,b$给出。 思路: 将括号拆开,变为$A_i i b$,所以将所有的$A_i$减去$i$,然后就是一个经典问题了。 Code D Equal Cut 题意
阅读全文
摘要:前言 今天中午不知怎么的对这个东西产生了兴趣,感觉很神奇,结果花了一个中午多的时间来看QAQ 下面说下自己的理解。 高维前缀和一般解决这类问题: 对于所有的$i,0\leq i\leq 2^n 1$,求解$\sum_{j\subset i}a_j$。 显然,这类问题可以直接枚举子集求解,但复杂度为$
阅读全文
摘要:"传送门" A. Dawid and Bags of Candies 乱搞。 Code cpp include define MP make_pair define fi first define se second define sz(x) (int)(x).size() // define Lo
阅读全文
摘要:"传送门" A Maximum Multiple 推一下式子暴力判断即可,范围不会太大。 Code cpp include define MP make_pair define fi first define se second define sz(x) (int)(x).size() // def
阅读全文
摘要:"传送门" C Candles 双指针维护一个区间搞一下就行。 Code cpp include using namespace std; typedef long long ll; const int N = 1e5 + 5; int a[N], b[N]; int n; int c[N]; in
阅读全文
摘要:"传送门" A. 2048 Game 乱搞即可。 Code B. Knights 直接按奇偶分类其实就行,但我写了个$dfs$... Code C. Perfect Team 直接输出就行,但我写了个二分... Code D. Make The Fence Great Again 题意: 给出$n$
阅读全文
摘要:"传送门" A. Cards 记录一下出现的个数就行。 Code B. Multiplication Table 题意: 存在一个序列$a$,现在给出一个矩阵$M$,$M_{ij}=a_i\cdot a_j$。但现在序列和矩阵主对角线上面的元素遗失了。 现在要求$a$序列,数据保证有解。 思路: 容
阅读全文
摘要:"传送门" B. Dudu's maze 题意: 是什么鬼东西???我读题可以读半小时QAQ 给出一张无向图,一个人在里面收集糖果,每个点都有一个糖果,特殊点除外。当他第一次进入特殊点时,会随机往一条边走;之后再进入特殊点时,直接退出。 问最后期望获得的糖果数为多少。 思路: 注意到这个人肯定会贪心
阅读全文
摘要:"传送门" B. Light bulbs 题意: 起初$n$个位置状态为$0$,$m$次操作,每次操作更换区间状态:$0$到$1$,$1$到$0$。 共有$T,T\leq 1000$组数据,$n\leq 10^6,m\leq 1000$。 最后输出状态为$1$的个数和。 思路: 一开始冲了一发维护差
阅读全文
摘要:"传送门" A. Paint the Numbers 签到。 Code cpp include using namespace std; typedef long long ll; const int N = 105; int n; int a[N], b[N]; char s[N]; int ma
阅读全文
摘要:"传送门" A. Yellow Cards 细心点即可。 Code cpp include define fi first define se second define MP make_pair using namespace std; typedef long long ll; typedef
阅读全文
摘要:"传送门" 题意: 给出$n$个数$a_i$,现在要将其分为两堆,使得这两堆数的异或和相加最大。 思路: 考虑线性基贪心求解。 但直接上线性基求出一组的答案是行不通的,原因之后会说。 注意到如果二进制中某一位$1$的个数出现了奇数次,那么无论怎么分,都会有一组中这位为$1$;对于出现偶数次的位,两组
阅读全文
摘要:"传送门" A. Who is better? 扩展中国剩余定理+斐波那契博弈,没啥好说的,关于斐波那契博弈,详见: "传送门" Code cpp include typedef long long ll; typedef unsigned long long ull; typedef double
阅读全文
摘要:题意: 先有$n=p_1^{k_1}p_2^{k_2}\cdots p_m^{k_m}$,定义$f(n)=k_1+k_2+\cdots+k_m$。 现在计算 $$ \sum_{i=1}^nf(i!)\% 998244353 $$ 思路: 首先注意到$f$函数有这样一个性质:$f(ab)=f(a)+f
阅读全文
摘要:"传送门" 题意: 先有两种操作,插入和查询,插入操作则插入一个点$(x,y,z)$,查询操作给出两个点$(x_1,y_1,z_1),(x_2,y_2,z_2)$,回答满足$x_1\leq x\leq x_2,y_1\leq y\leq y_2,z_1\leq z\leq z_2$的$(x,y,z)
阅读全文
摘要:"传送门" 题意: 求最小的$x$,满足$\frac{x(x+1)}{2}\% n=0,n\leq 10^{12}$。 多组数据,$T\leq 100$。 思路: 直接考虑模运算似乎涉及到二次剩余什么的,但比较复杂。 注意到比较特殊的就是,最后结果为$0$,那么我们就考虑将问题转化为整除。 所以式子
阅读全文
摘要:"传送门" A abc 题意: 给出字符串$s$,要求统计$s$中子序列为$"abc"$的个数。 思路: 分别统计一下前缀$a$和后缀$c$的个数即可。 Code cpp include using namespace std; typedef long long ll; const int MOD
阅读全文
摘要:"传送门" 思路: 就是cdq套cdq的模板题 cpp include using namespace std; typedef long long ll; const int N = 100005; struct node { int d1, d2, d3, d4, part; }a[N], b[
阅读全文
摘要:"传送门" A Password 输出$n n n$即可。 Code cpp include using namespace std; typedef long long ll; const int N = 25; int n; int a[N], b[N], c[N]; int main() {
阅读全文
摘要:"传送门" 题意: 给出一个长度为$n$的串,现在有$q$个询问,每个询问是一个区间$[l,r]$,要回答在区间$[l,r]$中,最少需要删多少个数,满足区间中包含$2017$的子序列而不包含$2016$的子序列。 思路: 先不考虑多个询问,那么这个问题区间$dp$可以解决,状态定义中要附加状态转移
阅读全文
摘要:"传送门" A. Enju With math problem 题意: 给出$a_1,\cdots,a_{100}$,满足$a_i\leq 1.5 10^8$。 现在问是否存在一个$pos$,满足: $$ \forall x\in [1,100],a_x=\varphi(x+pos 1) $$ 思路
阅读全文
摘要:"传送门" A. Creating a Character 暴力枚举显然不行,推一下式子就出来了,注意一下边界条件。 Code cpp include define INF 0x3f3f3f3f using namespace std; typedef long long ll; const int
阅读全文
摘要:"传送门" A. Optimal Currency Exchange 枚举一下就行了。 Code cpp include using namespace std; typedef long long ll; int b, g, n; int main() { ios::sync_with_stdio
阅读全文
摘要:"传送门" C Triangular Relationship 题意: 给出$n,k$,现在要你求合法三元组的数量,合法是指对于一个三元组$(a,b,c)$,每个数都不超过$n$,并且$a+b,b+c,a+c$为$k$的倍数。 思路: 按照模$k$的余数来讨论即可。 Code cpp include
阅读全文
摘要:"传送门" C /\\/\\/\\/ 题意: 给出一个序列$\{a_i\}$,先要求其满足以下条件: $a_i=a_{i+2}$ 共有两个不同的数 你现在可以修改任意个数,现问最少修改个数为多少。 思路: 很明显奇偶分类。 记录奇数位置、偶数位置的最大值和最大出现次数的情况; 因为要求两个数不相同,
阅读全文
摘要:"传送门" 题意: 给出一颗边权为正数的树,问有多少点对之间的距离小于等于$k$。 思路: 点分治模板题,对于一个子问题,$dfs$出所有的距离之后,排个序可以用双指针,或者直接二分也行,复杂度都为$O(nlogn^2)$。 cpp include using namespace std; type
阅读全文
摘要:"传送门" 题意: 给出一颗树,每条边都有一定的边权。 先问点之间路径和为$3$的倍数的点对有多少。 思路: 点分治模板题。 可以将问题转化为经过一个点$t$的路径和不经过点$t$的路径两种情况,后者可以直接递归处理。 在一个子问题中,$dfs$一遍处理出根结点到其余子树中所有点的距离,然后得到距离
阅读全文
摘要:今年多校有这样一道题: "传送门" 做法如果直接dfs暴力跳fail指针,跳到一个标记了的结点就break,跑得很快,后面有群友说只需要跳一次fail指针即可。 当时没怎么想明白,今天来看又想了一下,发现证明并不难,只需要分几种情况即可,我就直接放图吧: 总结: 在许多的自动机中都存在fail指针,
阅读全文
摘要:"传送门" 题意: 现在需要维护两种操作,一种是插入一条线段,另一种是询问$x=k$时,最上方线段的编号,如有多个线段处于最大值状态,那么就输出编号最小的。 强制在线。 思路: 这就是一个李超树的模板题... 李超树一般就可以用来维护一些跟线段、直线有关的问题,比如询问当$x=x_0$时,所有线段的
阅读全文
摘要:"传送门" A. The beautiful values of the palace 题意: 给出一个$n n$的矩阵,并满足$n$为奇数,矩阵中的数从右上角开始往下,类似于蛇形填数那样来填充。 之后会给出$m$个有效数字的坐标,坐标左下角为$(1,1)$,右上角为$(n,n)$,其余数字都为$0
阅读全文