VIrtuoso

两把多兰剑加个布甲鞋

导航

2019年3月31日 #

Codeforces Round #545 (Div. 2) D 贪心 + kmp

摘要: 题意 两个01串s和t,s中字符能相互交换,问最多能得到多少个(可交叉)的t 题解 即将s中的01塞进t中,预处理出next(tlen),然后每次填完移到next(tlen)继续填即可 代码 c++ include using namespace std; int sl,pl,i,j,a,b,e,f 阅读全文

posted @ 2019-03-31 17:02 VIrtuoso 阅读(122) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 58 (Rated for Div. 2) F dp + 优化(新坑) + 离线处理

摘要: 题意 有n个城市,m辆卡车,每辆卡车有起点$s_i$,终点$f_i$,每公里油耗$c_i$,可加油次数$r_i$,每辆卡车的油箱大小一样,每次加油都会加满,在城市之间不能加油,问最小油箱大小能满足每辆卡车顺利到达终点 题解 n define ll long long define MAXN 5000 阅读全文

posted @ 2019-03-31 16:56 VIrtuoso 阅读(88) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 58 (Rated for Div. 2) D 树形dp(自下往上) + 数学

摘要: 题意 一颗n个点的树,找出一条gcd 1的最长链,输出长度 题解 容易想到从自底向长转移 因为只需要gcd 1即可,所以定义$dp[u][i]$为u的子树中和u相连的gcd含有i的最长链长度,i为素因子 这样对于每个点u,维护$dp[u][i]$,用两条最长子链和u构成的链更新答案即可 代码 c++ 阅读全文

posted @ 2019-03-31 16:30 VIrtuoso 阅读(132) 评论(0) 推荐(0) 编辑

Codeforces Round #536 (Div. 2) F 矩阵快速幂 + bsgs(新坑) + exgcd(新坑) + 欧拉降幂

摘要: 题意 数列公式为$f_i=(f^{b_1}_{i 1} f^{b_2}_{i 2} ... f^{b_k}_{i k})$mod$P$,给出$f_{1}...f_{k 1}$和$f_{n}$,求$f_{k}$,其中$P$等于998244353 题解 3是998244353的离散对数,所以$f^{b_ 阅读全文

posted @ 2019-03-31 16:18 VIrtuoso 阅读(143) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 58 (Rated for Div. 2) G 线性基

摘要: 题意 一个有n个数字的数组a[],将区间分成尽可能多段,使得段之间的相互组合异或和不等于零 题解 根据线性基的定义(线性无关),任意线性基组成的集合的异或和都不会等于0,因为假如等于零,说明一定存在一个基能被其他基异或表示 依次将数组a插入线性基中,最后非0线性基的数量就是答案 代码 c++ inc 阅读全文

posted @ 2019-03-31 15:41 VIrtuoso 阅读(137) 评论(0) 推荐(0) 编辑

Codeforces Round #532 (Div. 2) F 线性基(新坑) + 贪心 + 离线处理

摘要: 题意 一个有n个数组c[],q次询问,每次询问一个区间的子集最大异或和 题解 单问区间子集最大异或和,线性基能处理,但是这次多次询问,假如每次重新建立基向量会超时 考虑区间的优先级,假如我只插入不删除的话,区间的优先级和左端点没有关系 贪心一下,只保留后面插入的基,这样就可以离线解决询问,然后查询的 阅读全文

posted @ 2019-03-31 15:24 VIrtuoso 阅读(98) 评论(0) 推荐(0) 编辑

Codeforces Round #548 (Div. 2) F splay(新坑) + 思维

摘要: 题意 有m个人,n道菜,每道菜有$p_i$,$s_i$,$b_i$,每个人有$inc_j$,$pref_j$,一个人可以买一道菜的条件是 1. $p_i \leq inc_j \leq s_i$ 2. $|b_i pref_j| \leq inc_j p_i$ ,问每个人分别能买多少道菜 题解 转化 阅读全文

posted @ 2019-03-31 15:05 VIrtuoso 阅读(95) 评论(0) 推荐(0) 编辑

Codeforces Round #548 (Div. 2) E 二分图匹配(新坑) or 网络流 + 反向处理

摘要: 题意 有n个学生,m个社团,每个学生有一个$p_i$值,然后每个学生属于$c_i$社团, 有d天,每天首先随机去除一个人,然后再从每个社团挑选一个学生(假如社团没有学生就跳过这个社团),使得这些学生组成的集合的mex值最大,输入每天的mex值 题解 假如这道题发现是二分图匹配就很好做 左边用$p_i 阅读全文

posted @ 2019-03-31 14:14 VIrtuoso 阅读(137) 评论(0) 推荐(0) 编辑

CodeCraft-19 and Codeforces Round #537 (Div. 2) E 虚树 + 树形dp(新坑)

摘要: 题意 一颗有n个点的树,有q个询问,每次从树挑出k个点,问将这k个点分成m组,需要保证在同一组中不存在一个点是另一个点的祖先这种情况,问有多少中分组方案 题解 首先解决转移问题,假设一次询问全颗树的分组方案数,定义dp[u][i]为到树节点u,分了i组的方案数,其中num(fa[u])为u的祖先节点 阅读全文

posted @ 2019-03-31 13:24 VIrtuoso 阅读(191) 评论(0) 推荐(0) 编辑

Codeforces Round #548 (Div. 2) C dp or 排列组合

摘要: 题意 一颗有n个点的树,需要挑选出k个点组成序列(可重复),按照序列的顺序遍历树,假如经过黑色的边,那么这个序列就是好的,问有多少个好的序列 题解 黑边不连,红边连,假如两个点不在同一并查集,那么一定经过黑边 定义$dp[i][j][k]$为选择前i个点,起始点为j,是否已经经过黑边(k)的方案数 阅读全文

posted @ 2019-03-31 12:41 VIrtuoso 阅读(146) 评论(0) 推荐(0) 编辑