分类:算法竞赛

DarkBzoj提交地址:因为没有SPJ,所以需要特殊处理答案如下:if (ans) printf("%.10f",ans); else puts("0");题意某个公司有 $n(\le 5\times 10^5)$ 个人, 上下级关系构成了一个有根树,其中有个人是叛徒(这个人不知道是谁)。对于一个人, 如果他下属(直接或者间接, 不包括他自己)中叛徒...
题意给一个数字串 $s(|s|\le 10)$ 和正整数 $d(\le 1000)$ , 统计 $s$ 有多少种不同的排列能被 $d$ 整除(可以有前导 $0$)。题解$|s|$ 较小,考虑状压。用 $f(S,i)$ 表示下标集合 $S$ 内的数都用过了,当前数 $\equiv i\pmod d$ 。每次枚举一个不在 $S$ 的数 $j$ 加入转移,方程式为:$$f(S,i)\rightar...
题意给一个 $n(\le 15)$ 个点 $m$ 条边的无向连通图(不存在自环或重边),每条边有一个边权,要求割掉若干条边,使 $1$ 到 $n$ 只有 $1$ 条路径(不经过重复点),问割掉的边权和最小是多少。题解可以发现最后图的形态一定是一条链,链上可能挂了若干个连通块,要最大化图的边权和。$n$ 比较小,考虑状压。用 $f(S,i)$ 表示目前链上的终点为 $i$ ,加入的点集为 $S...
题意有一棵 $n(\le 3\times 10^5)$ 个点的树和 $m(\le 3\times 10^5)$ 条路径,可以把一条边的边权改为 $0$ ,求所有路径长度最大值的最小值。题解求最大的最小值,可以二分答案 $mid$ 。可以发现如果路径的长度 $> mid$ ,那么路径上一定有一条边要被修改。所以修改的这条边需要覆盖所有长度 $> mid$ 的路径,并且边权要 $\g...
由于一些玄学的原因,BZOJ最近上不去了。不过我从某群里得知可以通过它原来解析的IP地址访问,于是便有了这篇文章。查询BZOJ原来的IP地址,随便百度一下就出来了,如这个,可以看到历史解析为 61.187.179.132修改host,加上一行:61.187.179.132 www.lydsy.com然后就可以访问啦
算法竞赛
题意自己去看吧太长了我懒得总结了题解可以发现,对一段路使用了加速器,那么在区间终点下车的乘客旅行时间都会 $-1$ 。所以可以预处理出每个点下车的人数 $q[i]$ 。预处理出最开始每个点的到达时间 $arr[i]$ 和 每个点最后到达的旅客时间 $last[i]$ 。如果使用加速器后能让下一段路的起点 $i$ 提前开车,即满足 $arr[i]-1<last[i]$ ,那么在下一段路的...
算法竞赛 算法-模拟 算法-贪心
题意一个圆的方程为 $x^2+y^2=r^2$ ,给出 $r$ ,问圆上有多少个点的坐标都是整数。题解可以用勾股定理的通解:$$x=d\dfrac{v^2-u^2}{2} \ , \ y=duv \ , \ r=d\dfrac{v^2+u^2}2$$枚举 $d$ ,就可以得到 $u^2+v^2$ ,再枚举 $u$ 就可以统计答案了。不过这样算出来的是第一象限内的解,所以最后答案要 $\tim...
算法竞赛 数学
题意有 $n(\le 150000)$ 个建筑需要修复,每个建筑有修复耗时 $t1$ 以及修复完成的截止时间 $t2$ ,问最多能修复多少个建筑。题解贪心。先把所有建筑按照截止时间排序,然后依次处理各个建筑。如果当前建筑还能修就修,否则就从之前修过的建筑里找到耗时最多的,如果比当前建筑的耗时多就替换掉。需要用堆维护。#include<bits/stdc++.h> using n...
算法竞赛 算法-贪心
我是傻逼,赛后D题加了一行就过了。。。A.Distinct Digits题意给出 $l,r(\le 10^5)$ ,求 $x\in [l,r]$ ,要求 $x$ 各数位均不同。题解数据范围小,直接暴力判断。#include<bits/stdc++.h> using namespace std; inline int read() { char ch=getchar()...
算法竞赛 比赛-Codeforces
题意对 $\forall i\in [1,n]$ ,求下式对 $123456789$ 取模的值$$\sum_{j=1}^n a_{\lfloor \frac{i}{j} \rfloor}\times b_{i \ \mathrm{mod} \ j}$$$n\le 10^5 \ , \ a_i,b_i\le 10^9$题解A了这题再随便打了下T3的暴力就rk18了。中途还突然把时限放宽到 $2...
算法竞赛 数学 算法-分块
题意求$$\sum_{i=1}^n k \ \mathrm{mod} \ i$$$n,k\le 10^9$题解经典的数值分块问题。原式可以化为:$$n\times k - \sum_{i=1}^n i\times \lfloor \dfrac{k}{i} \rfloor$$问题就转化为求 $\sum_{i=1}^n i\times \lfloor \dfrac{k}{i} \rfloor$可...
算法竞赛 数学 算法-分块
题意有 $n(n\le 5\times 10^5)$ 个人,如果两个人之间所有人的身高都不高于他们,他们就可以互相看见。问有多少对人可以相互看见。题解总感觉之前做过但又找不到,所以还是写下来记录一下。维护一个从大到小的单调栈,当前这个人 $i$ 可以和单调栈中所有 $h_j\le h_i$ 的人 $j$ 以及第一个比他高的人 相互看见。如果身高相同应该合并在一起。#include<bi...
算法竞赛 数据结构-单调栈
双倍经验:洛谷4568,只需要改数据范围。题意有一个 $n(n\le 10000)$ 点 $m(m\le 50000)$ 边的无向图,可以将其中 $k(k\le 20)$ 条边的边权改成 $0$ ,求 $1\rightarrow n$ 的最短路。题解分层图最短路。将图分为 $k+1$ 层,同一层按给出的边连边;第 $i$ 层与第 $i+1$ 层之间也按给出的边连,但权值为 $0$ 。这样走到...
算法竞赛 图论-最短/最长路
题意有一个 $m(m\le 20)$ 个点 $e$ 条边的无向图,有 $n(n\le 100)$ 个时刻需要从 $1\rightarrow m$ (保证可以到达)。每个点都有些时刻无法通行,如果更换道路还需要额外交 $k$ 元。求最小花费。题解用 $f[i]$ 表示前 $i$ 个时刻的最小花费,$x$ 表示最短路径。枚举与 $i$ 路径相同的区间起点 $j$ ,可以得到方程:$$f[i]=\...
题意给出 $n(n\le 100)$ 个单词,求一段长度不超过 $1000$ 的情书中出现了多少次这些单词,一句话中只统计一次。题解小清新模拟题,用 map 标记给出的单词以及当前这句话里是否出现过。#include<bits/stdc++.h> using namespace std; inline int read() { char ch=getchar(); i...
算法竞赛 算法-模拟 字符串
标签
其它-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