摘要:
.real()成员函数 FFT的本质是快速计算多项式的点值表示 对负实数的四舍五入需要-0.5 编写函数接收数组地址时,注意不能破坏原数组 FFT有较为严重的精度问题,double甚至难以准确计算两个\(10^9\)级别的整数相乘的结果,即使采用long double也时常无法得到准确的答案,这或许 阅读全文
摘要:
题目链接 问题之所以看上去很棘手,是因为各种意义上的起始能量值未知 但能量值的上限最多仅为100,因此我们可以通过枚举消去这一维度的信息,于是需要统计的信息就可以用线段树维护了 点击查看代码 #include <bits/stdc++.h> using namespace std; int n,m, 阅读全文
摘要:
题目链接 可重组合(从集合中选取的元素可重复):把选数视为将相同的小球放到不同的盒子中,然后再用隔板法处理,结论是$\binom{n+r-1}{r} $ 点击查看代码 #include <bits/stdc++.h> using namespace std; const int mod=100000 阅读全文
摘要:
题目链接 线段树优化建图 一般用动态开点线段树实现 建立对称的入树和出树,它们本身就是图的一部分 点击查看代码 #include <bits/stdc++.h> using namespace std; vector<int>a[600005]; int c[100005],cnt,tot,sum, 阅读全文
摘要:
题目链接 相同颜色“接力” 子树余树的信息可以通过全局信息减去子树信息来统计 在最后一刻,其实你已经意识到,问题大概出在((g[fa][0]-f[n1][0])+n-sum-cnt[n1][0])这个式子上 但你最终没能找出错误,因为你只关注到式子的逻辑有没有问题,而没有意识到变量对式子的诠释是否恰 阅读全文
摘要:
一段合法的括号序和一棵有根树唯一对应,具体而言,考虑生成括号序的过程,从根节点出发,遇到左括号就向下走一步,遇到右括号就向上走一步 由于树上的一个节点可能有多个子节点,因此在不规定访问顺序的情况下,同一棵树有多种不同的括号序列 点击查看代码 #include <bits/stdc++.h> usin 阅读全文
摘要:
题目链接 新增一条树边,等价于,在原先的有向图游戏上,对于每个状态,都连一条通向该单一根节点状态的边,故所有状态的SG函数值都+1,利用有向图游戏的组合求SG函数值 点击查看代码 #include <bits/stdc++.h> using namespace std; vector<int>a[3 阅读全文
摘要:
题目链接 求出最大流后,从源点开始沿残量网络BFS,标记能够到达的点。E中所有连接已标记点和未标记点的边构成最小割 阅读全文
摘要:
题目链接 如果从前缀和的视角考察题目中需要统计的信息,那么子段和=x等价于s[r]-s[l-1]=x 于是我们虽然不能O(1)地求出w(l,r),但是可以O(1)地将已知的w(l,r)扩展 w(l,r)是一个非常明显的满足“包含大于等于交叉”的四边形不等式的函数,除此之外,通过打表找规律,也可以发现 阅读全文
摘要:
题目链接 【正难则反】,将操作【等价】转化为一开始所有人都在0号房间 【发现性质】,后缀和%i始终为0 (考虑操作过程中的不变量) 由于百度之星赛制的特殊性(提交后可以看到每个测试点的得分情况),或许可以借此验证自己的想法 点击查看代码 #include <bits/stdc++.h> using 阅读全文