题目链接: https://jzoj.net/senior/#main/show/6101 题目: 题解: 设$f_i$表示从节点$i$到节点$n$的期望时间,$f_n=0$ 最优策略就是如果从$i,j$之间存在边且$f_j<f_i$的话,那么就从$i$走到$j$ 有$f_i=\frac{1}{m}(\sum_{link[i][j]=1}min(f_i,f_j))+1+\frac{m-du_i}{m}f_i$ $du_i$是$i$的度数 即$du_if_i=\sum_{link[i][j]=1}…
题目链接: https://jzoj.net/senior/#contest/show/2686/2 题目: 题解: 说实话这题调试差不多花了我十小时,不过总算借着这道题大概了解了计算几何的基础知识 首先,若$1$号星与其他两颗星共线,那么显然新出现的 1 号星也必须在这条线上,因此可行的面积为 0 ,下文我们考虑 1 号星不与其他任意两颗星共线的情况 一个$O(n^2 log n)$的做法是枚举每一对星,$1$号星移动必然不能越过每一对星形成的直线,这样我们就可以通过半平面交解决这个问题 事实…
题目链接: https://jzoj.net/senior/#main/show/6080 题目: 题意: 给定$n,m,u,v$ 设$t_i=ui+v$ 求$\sum_{k_1+k_2+...+k_m=n}t_1^{k_1}t_2^{k_2}...t_m^{k_m}(k_1,k_2,...,k_m∈N)$ 算法一: 对于$m=1$的点,显然答案就是$t_1^n$,快速幂计算即可 获得$5$分 算法二: 对于$m=2$的点,$\sum_{k1+k2=n}t_1^{k_1}t_2^{k_2}=\f…
题目链接: https://jzoj.net/senior/#main/show/6092 题目: 知识点--平面图转对偶图 在求最小割的时候,我们可以把平面图转为对偶图,用最短路来求最小割,这样会比dinic更快,但只是只用于网格图 网格图(平面图),即满足可以画在平面,且任意两条边的交点只能是边的顶点的图 性质:一个联通的平面图有$n$个点,$m$条边,$f$个面,那么有$f=m-n+2$ 对于一个平面图,我们可以找到它的对偶图.做法是把每一个分割出来的面作为一个个顶点,两个面之间存在边并且…
题目链接: https://jzoj.net/senior/#main/show/6086 题目: 题解: 一群数字的最小公倍数就是对它们质因数集合中的每个质因数的指数取$max$然后相乘 这样的子树查询一般都与$dfs$序有关 不妨把一个质因数$p$拆分成$p^1,p^2,p^3...$这样若干种颜色,每种颜色对答案的贡献都是$p$ 我们从另一个角度来考虑如何处理“不同的数”.先不管深度,考虑两个点权相等的节点$u$和$v$,点权为$val$,他们自己的贡献是使得所有子树内包含他的节点答案乘以…
题目链接: https://jzoj.net/senior/#contest/show/2683/0 题目: 题解: 不妨枚举一个点,让两颗树都以这个点为根,求联通块要么点数为$0$,要么包括根(即联通块必须从根开始) 考虑一个不是根的点$x$,若$x$在联通块以内,要保证联通块的连通性,那么从$x$的父亲要在联通块以内 这种一个点选了就必须要选另一个点的问题是典型的最大权闭合子图模型 做法如下 设$s$为源点,$t$为汇点. 使$s$连向所有的正权点(非负权点),边权为点权 使所有非负权点(负…
题目链接: https://jzoj.net/senior/#main/show/6087 题目: 题解: 只需要统计$\prod_{i=l}^r (1-\frac{a_i}{x})$ =$exp(\sum_{i=l}^r ln(1-\frac{a_i}{x}))(x>a_i)$ 我们可以把$ln(1-x)|x<1|$泰勒展开,得到$-\sum_{i=1}^{∞}\frac{x^i}{i}=0-\frac{x}{1}-\frac{x^2}{2}-\frac{x^3}{3}-...$ 那么里面化…
题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注:本题解大部分摘自Imagine大佬提供在洛谷的题解 我们设$f(x)$表示最小循环节长度为x的合法序列数,那么有$ans=\sum_{d|gcd(n,m)}\frac{1}{d}f(d)$ 这是因为最小循环节为d的序列对应的环会被计算d次,比如 0101,最小循环节长度为 2(循环节为 01),其对…
题目链接: https://jzoj.net/senior/#main/show/5893 题目: 题解: 考虑暴力怎么做,我们枚举左端点,维护一个栈,依次加入元素,与栈顶元素和栈内第二个元素相同时弹出栈顶和第二个元素.若某个时刻栈为空则说明当前区间是合法的,累加答案. 为什么相同就直接弹出呢?会不会当前的括号与之后的括号匹配呢?仔细想想发现二者都是合法的,不需要多次计算答案 现在优化这个暴力,从1开始,对于两个位置$i,j(i<j)$,若栈内的元素相同,那么说明$[i+1,j]$这一段是一个合…
题目链接: https://jzoj.net/senior/#main/show/5885 题目: 题解: 把$a$数组按升序排序 我们可以枚举$x$,发现对于任意$x$,最优情况下$y$一定等于$x+1$ 那么我们就是在一直$x$和$y$的前提下找$z$ 可以证明,在合法范围内,计算结果随着$a_z$的增大而单调增 证明就是化简一下这个式子$\frac{a_{z+1}-a_y}{a_{z+1}-a_x}>\frac{a_z-z_y}{a_z-a_x}(a_{z+1}>a_z>a_y&g…
题目链接: http://172.16.0.132/senior/#contest/show/2538/2 题目: 小S决定从某一个节点$u$开始对其子树中与$u$距离小于$K$的节点代表的花树进行采摘. 特别的,节点$u$代表的花树也会被采摘.依旧受限于精力,小S并不会亲自去采摘而是使用Extremely Strong的工具进行采摘. 我们定义一个工具的能力为$c$,小S会采摘的山树集合为$T$.那么小S能采摘到的山花数量$f_T = \prod _{i∈T} (a_i, c)$ 现在对于给定…
题目链接: http://172.16.0.132/senior/#main/show/5888 题目: 题解: 思路是这样的:两个数的最大公约数一定不会比这两个数的任意一个数大.因此我们把权值相等的看成一个点,先把这些点连起来算上贡献 考虑kruskal的做法,我们从大到小枚举边权,其实就是我们从大到小枚举最大公约数.假设当前枚举到i,我们再枚举$k_1$,$k_2$,判断$k_1i$,$k_2i$是否存在,若是存在再判断二者是否连通,如果没有连通就连起来算上i的贡献.或许有的人会想这样$2i…
题目链接: http://172.16.0.132/senior/#main/show/5905 题目: oi_juruo热爱一款名叫黑暗之魂的游戏.在这个游戏中玩家要操纵一名有 点生命值的无火的余灰在一张地图中探险.地图中有$n$个篝火(也就是存档点).在篝火处休息可以将生命值恢复满.每个篝火都会向其他篝火的其中之一连有一条通道(显然,通道是双向的),这些篝火之间都相互可达.也就是说,这是一张$n$个点,$n$条边的无向连通图.每条通道里都有一些怪物,经过oi_juruo的分析,他得到了每条边…
[LeetCode]71. Simplify Path 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.me/ 题目地址:https://leetcode.com/problems/simplify-path/description/ 题目描述: Given an absolute path for a file (Unix-style), simplify it. For e…
题目链接:https://jzoj.net/senior/#main/show/6101 记\(f_i\)为从\(i\)号点走到\(n\)号点所花天数的期望 那么根据\(m\)条边等可能的出现一条和一定会往期望值较小的点走的贪心策略我们可以得到 \[ f_i=\frac{1}{m}\sum min(f_i,f_j)+1 \] 其中当\(i,j\)不相连的时候可将\(f_j\)看做无限大 我们考虑在该式子中一共选取了\(sum\)次\(f_j\),也就是\(m-sum\)次\(f_i\),那么 \…
题目链接:https://jzoj.net/senior/#main/show/6099 考虑直接统计某个点到其它所有点的距离和 我们先把整个团当成一个点建图,处理出任意两个团之间的距离\(dis(i,j)\),注意这里的\(dis\)表示的是两个不位于团的相交部分的两点之间距离,即路程一定是某个点\(a->相交部分->b->--\)这样的 接下来我们枚举点\(x\),统计所有点到\(x\)的最短路,我们考虑从\(x\)到所有团的最短路,并按照该最短路从小到大的顺序考虑它们对答案的贡献…
Description N,M<=100000,S,T<=1e9 Solution 首先可以感受一下,我们把街道看成一行,那么只有给出的2n个点的纵坐标是有用的,于是我们可以将坐标离散化至O(n)级别. 显然出发地和目的地的地位是相同的,因此我们强制要求从编号小的街道走向标号大的街道. 我们考虑一个朴素的DP,记\(F[i][j]\)表示当前转移到了第i行,连接第i-1行和第i行的桥梁位于位置j 枚举上一行的桥梁在哪里,我们可以得到一个大概的转移式子\(F[i][j]=S[i][j]+min(…
题目链接: http://172.16.0.132/senior/#main/show/4722 题目: DJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧.Srwudi的家是一幢h层的摩天大楼.由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机,使得访客可以更方便的上楼.经过改造,srwudi的跳楼机可以采用以下四种方式移动:1.向上移动x层:2.向上移动y层:3.向上移动z层:4.回到第一层.一个月黑风高的大中午,DJL来到了srwudi的家,现在他在srwudi家的第一层,…
题目描述: \(1<=n,ai<=5*10^5\) 题解: 我是弱智我不会期望线性. 设\(E(a[i])\)表示第i个期望被减的个数. \(E(a[1])=a[1]\) 不难发现\(E(a[i])(i>1)\)之间互不影响,其实这很难. 考虑固定这两个,它们两个选到的概率一样,选到其它的就无视就好了. 那么只用考虑\(n=2\)的情况,这个直接暴力枚举\(a[1]\)结束时\(a[i]\)有几个,乘个\(1\over 2\)的几次方和组合数,式子如下: \(=a[i]-\sum_{i=…
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述: 题目大意 解题方法 日期 题目地址:https://leetcode.com/problems/longest-absolute-file-path/description/ 题目描述: Suppose we abstract our file system by a string in the following manner: The string "dir\n\…
T1 动态点分治 就是模拟..... 但是没有过!! 看了题解之后发现.... 坑点:有可能 \(x<=r\),但是…
比赛结束了几天...这篇博客其实比完就想写了...但是想等补完可做题顺便po上题解... 5.10晚的动车到了济南,没带外套有点凉.酒店还不错. 5.11早上去报道,济南大学好大啊...感觉走了一个世纪才到了他们的教学楼...跟我们学校比起来... 中午吃的他们的八食堂,对于我来说并没有吃饱,食堂看着很好但是给队员的窗口只有一个.其他的都没办法吃. 下午热身赛AB水题.C题刚开始觉得是二分,中途发现二分是错的然后改了几发过了之后就走了.出来之后才看的D,才知道为啥要放弃D了233 晚上吃饭吃得有…
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 日期 题目地址:https://leetcode.com/problems/longest-univalue-path/description/ 题目描述 Given a binary tree, find the length of the longest path where each node in the path has the s…
题目大意:给定一个4位素数,一个目标4位素数.每次变换一位,保证变换后依然是素数,求变换到目标素数的最小步数. 解题报告:直接用最短路. 枚举1000-10000所有素数,如果素数A交换一位可以得到素数B,则在AB间加入一条长度为1的双向边. 则题中所求的便是从起点到终点的最短路.使用Dijkstra或SPFA皆可. 当然,纯粹的BFS也是可以的. 用Dijkstra算法A了题目之后,看了一下Discuss,发现了一个新名词,双向BFS. 即从起点和终点同时进行BFS,相遇则求得最短路. 借鉴了…
最长路 链接: https://www.nowcoder.com/acm/contest/178/A 来源:牛客网 题目描述 有一张 \(n\) 个点 \(m\) 条边的有向图,每条边上都带有一个字符,字符用一个数字表示. 求以每个点为起点的最长路,输出走过的边的字符构成的字符串的字典序最小的方案. 为了方便,你需要这样输出方案: 如果最长路无限长,则输出Infinity 否则假设方案走过的边的字符依次为 \(w_1,w_2,\cdots,w_k\) ,输出\((\sum\limits_{i=1…
interlinkage: https://www.luogu.org/problemnew/show/P5283 description: solution: 显然有$O(n^2)$的做法,前缀和优化一下即可 正解做法是先确定一个右端点$r$,找到最优的$l$使得该区间的异或和最大,这个可以用可持久化$Trie$实现.不懂的话可以在我的博客里搜索 对每个点取出来后把答案放进一个堆里,显然当前的堆顶一定会对答案产生贡献 然后我们考虑每次取出的右端点,它依旧可能产生贡献.即上一次取的最优的$l$把…
题目链接: http://172.16.0.132/senior/#main/show/5166 题目: 题解: 这个没什么好讲的,就是注意生产者没人吃也不是食物链,这告诉我们要积累生物知识注意细节 #include<algorithm> #include<cstring> #include<iostream> #include<cstdio> #include<queue> using namespace std; typedef long l…
Description 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与Violet星球的战争中,由于Z副官的愚蠢,地球的领袖applepi被邪恶的黑魔法师Vani囚禁在了Violet星球.为了重启Nescafé这一宏伟的科技工程,人类派出了一支由XLk.Poet_shy和lydrainbowcat三人组成的精英队伍,穿越时空隧道,去往Violet星球拯救领袖applepi. applepi被囚禁的地点只有一扇门,当地人称它为“黑魔法师之门”.这扇门上画着一张无向无权图,…
Description 我们将矩阵A中位于第i行第j列的元素记作A[i,j].一个矩阵A是酷的仅当它满足下面的条件:       A[1,1]+A[r,s]<=A[1,s]+A[r,1](r,s>1)其中r为矩阵A的行数,s为矩阵A的列数.进一步,如果一个矩阵是非常酷的仅当它的每一个至少包含两行两列子矩阵都是酷的.你的任务是,求出一个矩阵A中的一个非常酷的子矩阵B,使得B包含最多元素. Input 第一行包含两个整数R,S(2<=R,S<=1000),代表矩阵的行数与列数.接下来R…
Description 挑竹签——小时候的游戏夏夜,早苗和诹访子在月光下玩起了挑竹签这一经典的游戏.挑竹签,就是在桌上摆上一把竹签,每次从最上层挑走一根竹签.如果动了其他的竹签,就要换对手来挑.在所有的竹签都被挑走之后,谁挑走的竹签总数多,谁就胜了.身为神明的诹访子自然会让早苗先手.为了获胜,早苗现在的问题是,在诹访子出手之前最多能挑走多少竹签呢?为了简化问题,我们假设当且仅当挑最上层的竹签不会动到其他竹签.   Input 输入文件mikado.in.第一行输入两个整数n,m, 表示竹签的根数…