04 2019 档案
摘要:用于较大规模数据的非递归的启发式合并/按秩合并并查集。 解决爆栈RE问题。 顺带连通块计数。 cpp include using namespace std; typedef long long ll; int n,m,x,y,z; namespace Disjoint_Set_Union { co
阅读全文
posted @ 2019-04-28 22:49
韵意
摘要:题目链接: 题目的意思很简单,输入两个系数、指数都是整数,变量都是大写字母的多项式,求他们的加法结果和乘法结果。 按照题目的意思模拟,先设计我们需要的类。 单项式 一个单项式由系数以及各个变量的指数组成,为了简单起见他们都是带符号数。 多项式 一个多项式由一个单项式的向量组成。 然后实现一些细节就可
阅读全文
posted @ 2019-04-28 17:48
韵意
摘要:终于搞明白了。根据某定理,最少需要的防御系统的数量就是最长上升子序列的数量。 呵呵手写二分果然功能很多,想清楚自己要找的是什么就可以了。 cpp include using namespace std; typedef long long ll; const int INF=0x3f3f3f3f;
阅读全文
posted @ 2019-04-27 02:50
韵意
摘要:首先这道题没有给Hm的最大值,很坑,只能随便开一个100没想到还过了。 观察题目,发现虽然高度可以变化,但是速度是不会下降的。 那么就可以考虑dp,设 $dp[h][v]$ 表示从开始状态 $dp[h1][v1]=0$ 到达高度为h,且速度为v的最短的时间。 搞个记忆化搜索就可以了。 需要注意的地方
阅读全文
posted @ 2019-04-27 01:45
韵意
摘要:https://www.luogu.org/fe/problem/P2439 很明显时间是一个维度,按照时间顺序决策就行了。 dp[i]表示以时间i为结尾所能达到的最长演讲时间。 cpp include using namespace std; typedef long long ll; int n
阅读全文
posted @ 2019-04-27 00:47
韵意
摘要:用来快速求解 $\sum\limits_{i=0}^{n}\lfloor \frac{ai+b}{c} \rfloor,\sum\limits_{i=0}^{n}{\lfloor \frac{ai+b}{c} \rfloor}^2,\sum\limits_{i=0}^{n}i\lfloor \fra
阅读全文
posted @ 2019-04-26 21:51
韵意
摘要:为什么可以跑n立方,我也不知道,反正就是可以。 模2意义的,据说每一行可以存一个bitset,会比用bool更快(快32倍?)。 本题告诉我们一个道理: 高斯消元之后,每个变量的含义不变(虽然交换了两行,但是实际上那个位置的向量还是表示那个单元),不需要复原。 每个变量要前往的目标状态不一样。注意非
阅读全文
posted @ 2019-04-26 11:26
韵意
摘要:真丶long double高斯约旦消元法 eps需要取得大一些,以免增加了矩阵的秩。 long double可能会慢一些但是无所谓,被卡精度太恶心了。 需要知道一些线代的知识(线代67说你呢!),比如秩、极大线性无关组(线性基)之类的。 cpp include define ll long long
阅读全文
posted @ 2019-04-25 23:36
韵意
摘要:update:其实拉格朗日插值法的问题在于求分母的复杂度是 $O(n^2)$ 的,要是还要求逆元则再多一个 $logp$ 变成 $O(n^2logp)$,但是当一个多项式要重复使用的时候,也不必求出他的各个系数,只要预处理出各项分母的逆元之后,$O(nlogp)$ 处理分子(求出前缀积和后缀积),然
阅读全文
posted @ 2019-04-25 19:40
韵意
摘要:BigDecimal和BigInteger的区别主要在于除法会除不尽,需要指定精确到小数点后多少位以及舍入方法。
阅读全文
posted @ 2019-04-23 23:19
韵意
摘要:之前被软院校赛卡了一波T,很亏啊。以下抄袭自Codeforces的神仙Petr。 可能得系统研究Java怎么写了?缺点是不能使用hasNext(),可能需要在main()中解决。
阅读全文
posted @ 2019-04-23 23:12
韵意
摘要:https://ac.nowcoder.com/acm/problem/17968 下面是错误的做法,因为题目要求必须使用x,而y在check的时候不一定用到等价于x的线性基来构成。 正确的做法是直接check(x^y),这样y已经使用了x,再看看能不能经过其他数表示。 因为异或是交换群。 cpp
阅读全文
posted @ 2019-04-23 18:00
韵意
摘要:https://ac.nowcoder.com/acm/contest/700/I 二维RMQ,贴个板子,注意爆内存,用char就可以了,char也可以存负数。 然后二分枚举对角线长度,理由很简单。 矩阵变大,极值只会变大不会变小。满足单调性。
阅读全文
posted @ 2019-04-23 17:10
韵意
摘要:区间最大值,$O(nlogn)$ 预处理,$O(1)$ 查询,不能动态修改。在查询次数M显著大于元素数量N的时候看得出差距。 令 $f[i][j]$ 表示 $[i,i+2^j-1]$ 的最大值。 显然, $f[i][0]=a[i]$ 。 根据定义式,写出状态转移方程: $f[i][j]=max(f[
阅读全文
posted @ 2019-04-23 16:55
韵意
摘要:取模版本: cpp include define ll long long using namespace std; const int INF=0x3f3f3f3f; //N为n^(2/3)最快 int n; const int N23=pow(1.0 INT_MAX,2.0/3.0); cons
阅读全文
posted @ 2019-04-22 00:50
韵意
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1715
阅读全文
posted @ 2019-04-21 00:58
韵意
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1042 大数嘛,直接用JAVA。 为什么要开64路?好像我觉得会快一点……其实并没有快…… java import java.io. ; import java.util. ; import java.math.
阅读全文
posted @ 2019-04-21 00:50
韵意
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1077 很明显这样的圆,必定有两个点在边界上。n平方枚举圆,再n立方暴力判断。由于没有给T,所以不知道行不行。
阅读全文
posted @ 2019-04-20 01:37
韵意
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1098 其实一开始猜测只要验证x=1的时候就行了,但是不知道怎么证明。 题解表示用 数学归纳法 ,假设f(x)成立,证明f(x+1)成立需要什么条件。 代入之后发现有很多二项式系数,导致他们都是65的倍数,剩下的恰
阅读全文
posted @ 2019-04-20 00:49
韵意
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移。 设dp[i]为已有i张票,还需要抽几次才能集齐的期望。 那么dp[n]=0,因为我们已经集齐了。 $$dp[i]=(\frac{i}{n} dp[i]+\frac{n
阅读全文
posted @ 2019-04-19 23:44
韵意
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1019 LCM即各数各质因数的最大值,搞个map乱弄一下就可以了。 cpp include using namespace std; typedef long long ll; typedef unsigned i
阅读全文
posted @ 2019-04-19 23:05
韵意
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1071 解一个给定三个点的坐标二次函数某区域的积分值。 设出方程之后高斯消元得到二次函数。然后再消元得到直线。 两次积分然后相减就可以了。 把自适应辛普森改成了传入函数指针的形式,有点多此一举。 可以这样做的原因,
阅读全文
posted @ 2019-04-19 22:31
韵意
摘要:一位数中缀表达式转后缀表达式并求后缀表达式值 cpp include using namespace std; typedef long long ll; //比较lhs的优先级是否不高于rhs,rhs表示栈顶的符号 bool priority(const char &lhs, const char
阅读全文
posted @ 2019-04-19 15:07
韵意
摘要:```cpp #include using namespace std; typedef long long ll; struct Point; typedef Point Vector; struct Point { ll x,y; Point(){} Point(ll _x,ll _y):x(_x),y(_y){} ll how_many_points(Po...
阅读全文
posted @ 2019-04-19 12:09
韵意
摘要:P3455 [POI2007]ZAP Queries 最简单的求gcd==d的个数,直接分块瞎搞。 cpp include using namespace std; define ll long long define MAXN 50000 int mu[MAXN+5]; int pri[MAXN+
阅读全文
posted @ 2019-04-17 23:51
韵意
摘要:2019/4/16 1:04 使用Yinku2017提交了第一发,当然是A+B Problem。 看一下排行榜,算一下区域赛还有180多天吧?先用30天过50道题(含A+B Problem)怎么样?
阅读全文
posted @ 2019-04-16 01:06
韵意
摘要:SPFA版本: Dijkstra版本: 这个版本不容易被卡,据说会快70%。缺点是要控制负数费用不能负得太离谱,不然换 long long 试试吧。
阅读全文
posted @ 2019-04-15 17:31
韵意
摘要:要是没学过高等数学的积分怎么办呢?可以求助于自适应辛普森法。 容易发现其实这个图形是对称的,我们只要求第一象限就可以了,第一象限如上图。 由于取点是在面积内等概率的,由高中的几何概型可知,所求概率为: 1.当S2.当S a b,则概率为1。 所求的面积为双曲线 $y=\frac{S}{x}$ 在 直
阅读全文
posted @ 2019-04-15 13:56
韵意
摘要:SPFA可以用来 判断负环 或者计算 带负权的最短路 。 其实带负权的最短路可以用带势Dijkstra计算…… 所以SPFA基本就拿来判负环了……
阅读全文
posted @ 2019-04-15 00:19
韵意
摘要:经过模板验证,6位精度取8位或9位还是比较快的。 一道练习题? cpp include using namespace std; typedef long long ll; namespace Adaptive_Simpson_Integral { / 备注: 1.直接往上面模板的F函数中输入本题给
阅读全文
posted @ 2019-04-14 19:18
韵意
摘要:update1:通过了 【模板】网络最大流 的验证。 update2:怎么求出最大流各条边的流量?将原图备份,dinic()后得到残余网络,用原图的流量减去残余网络的剩余流量。 标准模板: cpp include using namespace std; typedef long long ll;
阅读全文
posted @ 2019-04-14 17:47
韵意
摘要:一点都不简单的简单dp。 还是从旧行转移到新行,而不是考虑新行从哪些旧行转移吧。 cpp include using namespace std; typedef long long ll; namespace combinatorics{ const ll MOD=9999973; //1. 快速
阅读全文
posted @ 2019-04-14 13:29
韵意
摘要:比赛那天早上隔壁宿舍在装修,有毒,吵死了。 拿好了模板和书就去B3那边了。 赛前准备 进去以后安装了Firefox,CodeBlocks和Python3,差不多准备完毕了。 这次有一个新的体会就是要开三个以人名拼音首字母缩写的代码文件,这样不用换来换去,大家一眼就知道谁写的是什么。要是有人多开就在后
阅读全文
posted @ 2019-04-14 01:02
韵意
摘要:该模板已经废弃,请移步新模板! 1.隔板法 用于解决在两个球之间可以多次插入的问题: 当要求两个隔板间不必要有球时,那么就隔板和球加起来做一次全排列,假如隔板无差别就要除以隔板的排列,假如球无差别就要除以球的排列。 当要求两个隔板间一定要有球的时候,假如有 $k$ 个隔板,那么分成 $k+1$ 组,
阅读全文
posted @ 2019-04-13 21:58
韵意
摘要:二分图最大独立集 注意输入的时候控制x1,y1,x2,y2的相对大小. cpp include using namespace std; define ll long long / dinic begin / const int MAXN=5000; const int MAXM=120000; /
阅读全文
posted @ 2019-04-13 09:45
韵意
摘要:写的第一道黑色题,图建对了. 隐约觉得互相攻击要连边,规定从奇数行流向偶数行. 二分图最大独立集=二分图顶点总数 二分图最大匹配 因为把最大匹配d从顶点总数n中去掉,有n 2d个点. 从被去掉的点中,每个匹配重新加一个回来,加了d个. 所求为n d. 估计顶点上限,40000+2 然后每个顶点最多连
阅读全文
posted @ 2019-04-13 01:53
韵意
摘要:好像以前有个妹子收割铲也是欧拉函数. 因为格点直线上的点,dx与dy的gcd相同,画个图就觉得是欧拉函数.但是要注意对称轴还有左下角那个破点! cpp include using namespace std; define ll long long const int MAXN=40000+5; i
阅读全文
posted @ 2019-04-11 23:07
韵意
摘要:要求用最少的瓶子,那肯定不能有两个一样的瓶子,否则合并更优. 枚举其二进制位,每次加上lowbit,将最后一个1加上. 显然最多logn次. cpp include using namespace std; define ll long long ll n,k; int main(){ cin n
阅读全文
posted @ 2019-04-11 20:35
韵意
摘要:先打表看了一下规律,居然看出来n的位置是阶梯往前的.而每个阶梯的头头,必有后半段降序. 再仔细看一下居然每次交换后半段的没被交换过的元素和前半段的最后一个元素. 打了一个表,不清楚复杂度就交了,当时以为是n²的,因为逆序数最多有 $C_n^2$ 但最后事实证明不是. 因为一开始找阶梯是n的,找到之后
阅读全文
posted @ 2019-04-11 19:50
韵意
摘要:https://blog.csdn.net/nameofcsdn/article/details/53164652
阅读全文
posted @ 2019-04-11 01:29
韵意
摘要:一开始看了一看居然还想放弃了的. 把 $x,a_0,a_1,b_0,b_1$ 质因数分解. 例如 $x=p_1^{\alpha_1}p_2^{\alpha_2}...p_k^{\alpha_k}$ 由gcd的性质,对应指数的最小值,直接得一组方程. 再有lcm的性质,对应指数的最大值,再得一组方程.
阅读全文
posted @ 2019-04-08 20:25
韵意
摘要:```cpp //整除分块,n版 ll aliquot_patition(int n) { ll ans=0; for(int l=1,r; l
阅读全文
posted @ 2019-04-08 19:29
韵意
摘要:质数筛 cpp int p[MAXN], ptop; bool np[MAXN]; void sieve(int n) { np[1] = 1; for(int i = 2; i using namespace std; define ll long long define MAXN 1000000
阅读全文
posted @ 2019-04-08 19:16
韵意
摘要:求 $n,m$ 中 $gcd(i,j)==p$ 的数对的个数 求 $\sum\limits_p \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==p] $ 由套路: $=\sum\limits_p \sum\limits_{k=1}^{N}\m
阅读全文
posted @ 2019-04-08 18:46
韵意
摘要:https://www.luogu.org/problemnew/show/P2568 统计n以内gcd为质数的数的个数。 求 $\sum\limits_p \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n} [gcd(i,j)==p]$ 一开始还以为要莫比乌斯反演
阅读全文
posted @ 2019-04-07 20:35
韵意
摘要:https://www.luogu.org/problemnew/show/UVA11424 原本以为是一道四倍经验题来的。 因为输入的n很多导致像之前那样 $O(n)$ 计算变得非常荒谬。 那么我们就需要引入一个整除分块! 首先预处理欧拉函数的前缀和,然后丢进分块里面搞一搞。 那么就是 $O(n+
阅读全文
posted @ 2019-04-07 20:18
韵意
摘要:https://www.luogu.org/problemnew/show/P1390 求 $\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m} gcd(i,j) $ 不会,看题解: 类似求gcd为p的求法: $ f(n) = \sum\limits_{i=1}^{
阅读全文
posted @ 2019-04-07 17:32
韵意
摘要:https://www.luogu.org/problemnew/show/P2424 记 $\sigma(n)$ 为n的所有约数之和,例如 $\sigma(6)=1+2+3+6=12$ . 求 $ans(n)=\sum\limits_{i=x}^{y}\sigma(i)$ . 首先,记 $f(n)
阅读全文
posted @ 2019-04-07 16:42
韵意
摘要:https://www.luogu.org/blog/An-Amazing-Blog/mu-bi-wu-si-fan-yan-ji-ge-ji-miao-di-dong-xi
阅读全文
posted @ 2019-04-06 02:40
韵意
摘要:https://www.luogu.org/problemnew/show/P2293 要求求出给定高精度整数的非负根取整的结果。 还有神仙用Python的浮点pow运算骗到不少分的。 唉! 那么我们使用保险的语言:Java,需要怎么做呢? 高精度数是10的10000次方,他的根应该在10的100次
阅读全文
posted @ 2019-04-06 00:36
韵意
摘要:https://www.luogu.org/problemnew/show/P5000 第一次写一个正经的高精度题。 很明显ASCII码的乘积绝对是溢出的。 那么直接上Java。正好学一手Java的字符串处理。 Java的字符串String有toCharArray方法,也可以传入char[]数组直接
阅读全文
posted @ 2019-04-05 23:26
韵意
摘要:https://www.luogu.org/problemnew/show/P2152 一开始不知道Java可以有gcd,手写了个辗转相除法。 发现Number类在参数传递中传的并非是引用! 最主要要解决的是MLE的问题,经查询得知System.gc()方法可以手动回收内存。 但是它慢得离谱! 我们
阅读全文
posted @ 2019-04-05 23:04
韵意
摘要:第一个Java的算法程序。记得可以使用Alt+'/'自动补全sysout和main之类的。 BigInteger在java.math.BigInteger中。 顺便把A*B也搞了,Java是有FFT优化的乘法。 减法也就是变成subtract罢了。 斐波那契大数: https://www.luogu
阅读全文
posted @ 2019-04-05 21:06
韵意
摘要:https://www.luogu.org/problemnew/show/P1434 有向图的最长链怎么求?有环肯定不行,这里保证无环。(否则应该使用toposort先求出所有不带环的位置) 设dp[u]=以u点开始的最长链的长度,那么以u为子节点的v就有dp[v]=max(dp[v],dp[u]
阅读全文
posted @ 2019-04-05 16:29
韵意
摘要:https://www.luogu.org/problemnew/show/P1433 并不是每一个求最短距离就是bfs,这个肯定是dfs。 直接计算15!可以知道枚举必定超时,但是! 我们dfs非常方便最优性剪枝! 这个是不加最优性剪枝的版本,果断T了:
阅读全文
posted @ 2019-04-05 16:06
韵意
摘要:https://www.luogu.org/problemnew/show/P1118 next_permutation的第二个参数是最后一个元素的下一个元素,sort也是一样!有毒!这么低级的错误。而且应该是用do_while因为原始排列也要考虑! 使用sort跳过一些permutation的原理
阅读全文
posted @ 2019-04-05 15:51
韵意
摘要:略有收获的bfs,使用了try_enqueue函数使得加入队列非常方便。性能理论上是一样的因为是inline? 还有就是左对齐是使用%-4d,相对于右对齐的%4d,还有右对齐前导零的%04d,自己试一下呗。
阅读全文
posted @ 2019-04-05 14:36
韵意
摘要:https://www.luogu.org/problemnew/show/P1141 能互相到达的格子的答案自然是一样的,第一次dfs标记联通块,第二次dfs把cnt传递到整个联通卡并顺手消除vis标记(其实把vis标记改成另一个也可以的)。
阅读全文
posted @ 2019-04-05 14:17
韵意
摘要:https://www.luogu.org/problemnew/show/P1219 一开始朴素检查对角线就TLE了,给对角线编码之后压缩了13倍时间? 找了很久的bug居然是&&写成了&&&,我喷了。
阅读全文
posted @ 2019-04-05 13:50
韵意
摘要:https://www.luogu.org/problemnew/show/P1034 可能是数据太水了瞎搞都可以过。 判断两个平行于坐标轴的矩形相交(含顶点与边相交)的代码一并附上。 记得这里的xy和udlr是指数学上的坐标轴。 加入最优性剪枝:22ms,快了3倍?
阅读全文
posted @ 2019-04-05 13:02
韵意
摘要:https://www.luogu.org/problemnew/show/P1403 可以直接用线性筛约数个数求出来,但实际上n以内i的倍数的个数为n/i的下整,要求的其实是 $$\sum\limits_{i=1}^{n}\lfloor\frac{n}{i}\rfloor$$ 可以直接分块搞出来。
阅读全文
posted @ 2019-04-05 10:52
韵意
摘要:各种线性筛的合集: https://www.cnblogs.com/zhoushuyu/p/8275530.html 常见积性函数: μ(n):莫比乌斯函数φ(n):欧拉函数d(n):一个数nn的约数个数σ(n):一个数nn的约数和f(x)=x^k(k∈N):这个玩意儿也是积性函数 线性筛素数 线性
阅读全文
posted @ 2019-04-05 10:43
韵意
摘要:今天来啃一下这个树剖吧。 模板题是要求这四个问题: 将树从x到y结点最短路径上所有节点的值都加上z 求树从x到y结点最短路径上所有节点的值之和 将以x为根节点的子树内所有节点值都加上z 求以x为根节点的子树内所有节点值之和 http://www.cnblogs.com/zwfymqz/p/80945
阅读全文
posted @ 2019-04-04 00:12
韵意
摘要:https://www.luogu.org/problemnew/show/P2887 感觉可以: 把防晒霜拆点限制流量为瓶数,奶牛拆点限制流量为1,当某个防晒霜与奶牛匹配时连一条边,求最大流。但是这样的边数好像太多了。 最后忍不住去看题解,结果是贪心,好像的确是唉……
阅读全文
posted @ 2019-04-03 23:25
韵意
摘要:线性递推公式找递推矩阵的方法: https://blog.csdn.net/synapse7/article/details/18790165 构造方法:规定由递推矩阵A,左乘由项构成的矩阵F,其中矩阵A的第一列为对应系数,左下角为单位矩阵,右下角为零矩阵。 对于递推式的常数C,在矩阵F中增加最后一
阅读全文
posted @ 2019-04-03 23:11
韵意
摘要:注意网络流的边的上限是两倍,因为要有反向边。 注意最后传入的n在最新版本中一般传入t(假如t是最后一个节点的话,或者不传入)就可以了。 使用前要先init(),再添加addedge()。
阅读全文
posted @ 2019-04-02 11:52
韵意
摘要:https://www.luogu.org/problemnew/show/P2805 最大权闭合子图的特点是,假如你要选一个结点,则要先选中它的所有子节点。正权连S负权连T,容量为绝对值,原图有向边连容量INF。 这里的特点是在于假如这些结点形成了回路,那么不能选中其中任何一个因为没有突破口。 至
阅读全文
posted @ 2019-04-01 23:12
韵意