2019年5月

庆祝第100篇文章完成!题意一棵有边权的树,有的节点是转播站,有的节点是用户节点。要让用户看到电视,代价为根节点到当前用户节点的路径和,重复的路径不重新计算。每个用户可以支付一定的钱。求在不亏本的情况下,最多可以让多少个用户看到电视。其中点数 $N\le 3000$ 。题解树上背包的裸题。用 $f[x][i]$ 表示在以 $x$ 节点为根的子树中选 $i$ 个用户的最大收益。转移方程式为:$...
算法竞赛 动态规划-树形DP
题意给出 $S$ ,求所有正约数之和 $=S$ 的数。数据组数 $k\le 100$ , $S\le 2\times 10^{9}$ 。题解约数和为:$$\begin{matrix} \prod_{i=1}^n \end{matrix}\begin{matrix} \sum_{j=0}^{a_i} {p_i}^j \end{matrix}$$可以先预处理 $\le \sqrt{S}$ 的质数...
算法竞赛 数学
题意在树上放一些山贼集团的分部,每个分部可以收取根节点到它路径上所有节点的保护费。在节点 $i$ 建立分部 $j$ 花费 $s[i][j]$ 。对于每一个节点,如果它被多个分部收保护费,就可能产生收益或损失。求最优的放置方法,可以得到最大利润。其中点数 $N\le 100$ ,分部个数 $P\le 12$ 。题解看到 $P$ 的范围,显然可以对节点上放置分部的状态进行状压。因为每个分部收取的...
题意给出 $A,B$ ,求 $gcd(A,B)$ 。其中 $A,B\le 10^{3000}$ 。题解数据范围很大,显然要用二进制求 $gcd$ 。其它都是板子。#include<bits/stdc++.h> using namespace std; struct bigint { int len,s[3005]; bigint() { memset(s,0,...
算法竞赛 数学 数学-gcd
一年前做了然而却还是不会系列。题意给出 $a_0,a_1,b_0,b_1$ ,需要求 $x$ ,使得$$\begin{cases} gcd(x,a_0)=a_1 \\ lcm(x,b_0)=b_1 \end{cases}$$题解显然,对于$$gcd(x,y)=k$$我们可以将其化为$$gcd(\dfrac{x}{k},\dfrac{y}{k})=1$$又因为$$lcm(x,y)=k$$可以化...
算法竞赛 数学 数学-gcd
题意一个有点权和边权的无向图,求 所有点权和为 $0$ 的子图 的最小生成树的权值和。其中点数 $N\le 16$ 。题解看了半天题才得到上面的题意,看到 $N\le 16$ ,显然是状压。用 $f[id]$ 表示当前点集状态为 $id$ 时的最优解,当 $i$ 和 $j$ 状态内的点权和为 $0$ 时,转移方程式很显然:$$f[i|j]=f[i]+\text{Kruskal}(j)$$对每...
时隔一年(差两天)来做还是不会做,甚至连我当时写的是什么都没看懂,这充分凸显了写博客的必要性。题意求 $\le N$ 的最大数 $x$ ,满足 $\forall 1\le i\le x$ ,$i$ 的约数个数 $<$ $x$ 的约数个数。题解直接上搜索。先预处理可能会被用到的质数表,对于每个质数,搜索它可能会被用几次,最后如果约数个数大于当前最大值 或 约数个数相等但数值较小 都对答案...
算法竞赛 算法-搜索 数学
题意求:$$\dfrac {1}{x}+\dfrac {1}{y}=\dfrac {1}{n!}$$的正整数解 $(x,y)$ 的组数。题解对方程进行化简:$$\dfrac {x+y}{x\times y}=\dfrac {1}{n!}$$交叉相乘:$$x\times y=n!\times (x+y)$$化为 $y$ 的表达式:$$y=\dfrac{n!\times x}{x-n!}$$显然...
算法竞赛 数学 数学-约数
题意求所有在树上直径的节点。点数 $N\le 200000$ 。题解我百度谷歌搜了一圈硬是没看到一个像样的题解,去提交记录里面看代码读懂的方法。先跑第一遍 $dfs$ ,记录以 $x$ 为根的子树中深度的最大值 $mx[x]$ 和次大值 $mx2[x]$ ,两者相加再 $+1$ 即为这个子树的直径。然后再跑一遍,对于每个节点 $x$ ,遍历所有子节点 $y$ ,并对子节点向上最大深度 $up...
题意一个有向图,求:至少选多少个起点才可以遍历整个图至少加几条边,能满足从任意一个点出发都能遍历整张图其中点数 $N\le 100$ 。题解显然可以先缩点,然后对题意进行转化:入度为 $0$ 的点的个数加最少的边,让整张图成一个环问题 $1$ 很显然,对于问题 $2$ ,可以把所有入度为 $0$ 和出度为 $0$ 的节点相连,所以答案即为两者的较大值。#include<bits/std...
算法竞赛 图论-Tarjan 图论-缩点
题意有 $N$ 个长度相同的字符串,问恰好与其中 $K$ 个匹配的字符串有多少个。定义满足如下条件的字符串 $x$ 和 $y$ 为匹配的:$len_x=len_y$$\forall 1\le i\le len_x \ , \ x[i]='?' \ or \ x[i]=y[i]$其中 $N\le 15$ ,字符串长度 $len\le 50$ 。题解看数据范围,可以对 $N$ 进行状压。先预处理...
算法竞赛 动态规划-状压DP
题意学生排队去食堂吃饭,每个学生都有不同的口味 $\text{T}[]$ 。食堂做第 $1$ 到菜不需要时间,之后在口味为 $x$ 的菜后做口味为 $y$ 的菜花费的时间为 $x\oplus y$ 。为了节省总等待时间,食堂有时会不按排队顺序做,但每个同学最多忍受他后面的 $\text{B}[i]$ 个同学在他之前打饭。求等待总时间的最小值。其中人数 $N\le 1000$ ,$\text{...
算法竞赛 动态规划-状压DP
题意在 $N\times M$ 的棋盘上放若干个炮,要求不能互相攻击,求方案个数。其中 $N,M\le 100$ 。题解将题意转化一下就是每行每列都不能放超过 $2$ 个棋子,那么可以用 $f[i][j][k]$ 表示前 $i$ 行,有 $j$ 列是有 $1$ 个棋子,有 $k$ 列是有 $2$ 个棋子的合法方案数。那么没有棋子的列数即为 $M-j-k$ 。然后分类讨论。不放继承上一步的状态...
算法竞赛 动态规划 思维题
题意动物园的笼子环形排列,每个小朋友能看到从站的位置开始往后共 $5$ 个笼子的动物,每个小朋友都有喜欢和害怕的动物。可以移走一部分笼子。定义每个小朋友是开心的,当且仅当下列条件之一满足:在视线范围内至少有一个喜欢的动物没被移走。在视线范围内至少有一个害怕的动物被移走。求最优方案,使得开心的小朋友尽可能多。其中动物数 $N\le 10000$ ,小朋友个数 $C\le 50000$ 。题解动...
算法竞赛 动态规划-状压DP
题意在 $N\times M$ 的图中部署炮兵,只有平原才能部署。每个炮兵的攻击范围为上下左右各延申两格,求方案数。其中 $N\le 100,M\le 10$ 。题解跟 玉米田 差不多,但是因为前两行都对当前状态有影响,所以需要多一维。如果直接开 $\text{f}[105][1024][1024]$ 的数组空间就爆了,所以需要预处理每一行合法的状态。可以发现合法的状态最多 $60$ 种,所...
算法竞赛 动态规划-状压DP
标签
其它-Firefox1 其它-pbds1 其它-pjax1 其它-Ubuntu1 其它-VSCode1 其它-网易云音乐1 动态规划52 动态规划-区间DP9 动态规划-单调队列优化DP5 动态规划-图上DP1 动态规划-斜率优化DP5 动态规划-树形DP16 动态规划-状压DP16 动态规划-线性DP10 动态规划-背包DP3 图论4 图论-LCA4 图论-Tarjan11 图论-二分图1 图论-割点3 图论-基环树1 图论-差分约束4 图论-强连通分量2 图论-最小环1 图论-最小生成树6 图论-最短/最长路19 图论-树上差分2 图论-树的直径4 图论-桥1 图论-缩点5 图论-负环4 字符串3 字符串-kmp2 思维题3 数学26 数学-bsgs2 数学-exgcd4 数学-gcd2 数学-中国剩余定理2 数学-卡特兰数1 数学-卢卡斯定理4 数学-快速幂4 数学-扩展中国剩余定理1 数学-扩展卢卡斯定理3 数学-矩阵5 数学-约数1 数学-组合数3 数学-质数1 数据结构-动态开点线段树1 数据结构-单调栈1 数据结构-单调队列2 数据结构-可持久化字典树2 数据结构-堆4 数据结构-字典树2 数据结构-并查集2 数据结构-栈1 数据结构-树状数组6 数据结构-树链剖分10 数据结构-线段树5 数据结构-队列1 比赛-Codeforces21 比赛-JX Round1 比赛-NOIp/CSP5 算法-KM算法1 算法-二分/三分12 算法-位运算1 算法-倍增4 算法-分块2 算法-分治3 算法-哈希2 算法-多叉树转二叉树2 算法-差分4 算法-悬线法1 算法-拓扑排序2 算法-排序3 算法-搜索21 算法-模拟5 算法-状态压缩4 算法-贪心10 算法-高精度3 问题-逆序对2 题目-一本通5 题目-网络流24题2