
【算法】常数优化
文章平均质量分 72
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3240】【UOJ124】【NOI2013】矩阵游戏
【题目链接】BZOJUOJ【思路要点】直观地来想,本题可以用矩阵乘法优化递推来实现。但是进制转换并不方便,所以,我们考虑不记录一个方阵的\(2^i\)次方,转而记录一个方阵的\(10^i\)次方,这样就不需要进制转换了。时间复杂度\(O(|N|+|M|)\),由于常数很大,实现时可能需要一定的常数优化。【代码】#include<bits/stdc++.h>using namespac...原创 2018-03-08 12:55:53 · 331 阅读 · 1 评论 -
【LOJ3071】「2019 集训队互测 Day 2」神树大人挥动魔杖
【题目链接】点击打开链接【思路要点】记 waysiways_iwaysi 表示从 111 号点走到 iii 号点的方案数,有 waysi=p×waysi−1+q×waysi−2 (i≥2)ways_{i}=p\times ways_{i-1}+q\times ways_{i-2}\ (i\geq2)waysi=p×waysi−1+q×waysi−2 (...原创 2019-05-02 16:39:37 · 1473 阅读 · 0 评论 -
【LOJ3043】「ZJOI2019」线段树
【题目链接】点击打开链接【思路要点】不难发现题目要求计算所有操作集合的子集对应的 tagtagtag 数之和。分开考虑每个节点上 tagtagtag 的存在情况,我们希望设计一个能够转移的状态。一种可行的方式是在状态中记录 0/10/10/1 二元组 (self,ancestor)(self,ancestor)(self,ancestor) 分别表示节点本身及其任意祖先上是否...原创 2019-04-02 17:56:11 · 878 阅读 · 0 评论 -
【CodeForces】CodeForces Round #406 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Berzerk【思路要点】博弈搜索,将状态按先后手拆点,建出游戏图。若一个点存在出边指向必败态,则该点为必胜态。若一个点所有出边指向必胜态,则该点为必败态。不满足上述两点的点为平局态。用一个类似拓扑排序的过程实现即可。时间复杂度 O(N2)O(N^2)O(N2) 。【代码】#inclu...原创 2018-09-27 18:13:18 · 354 阅读 · 0 评论 -
【51Nod1835】完全图
【题目链接】 点击打开链接 【思路要点】 定义fifif_i表示iii个点的连通图的个数。 考虑用所有图减去不连通的图的个数,枚举111号节点所在联通块大小,有 fi=gi−∑i−1j=1(ij)∗fj∗gi−j, gi=2(i2)fi=gi−∑j=1i−1(ij)∗fj∗gi−j, gi=2(i2)f...原创 2018-08-25 13:29:39 · 918 阅读 · 0 评论 -
【NOI2018全国热身赛】小X的城池
【题目链接】点击打开链接【思路要点】我们采用线段树直接维护整个序列,每个节点代表一个区间,并在节点上记录:1、在区间内已经找到了人口更高的\(B\)的\(A\)的数量\(Ans\)2、区间内的道路是否全部向左\(All\)或向右\(Arr\)。3、区间内只能到达左端点/只能到达右端点/既可以到达左端点又可以到达右端点的,人口为\(k(0≤k≤75)\)的,还未找到人口更高的\(B\)的\(A\)的...原创 2018-06-24 21:07:53 · 324 阅读 · 0 评论 -
【BZOJ5292】【BJOI2018】治疗之雨
【题目链接】点击打开链接【思路要点】列出方程,高斯消元。我们发现在消元时每一行非零的位置为\(O(1)\)的,我们只要处理这些位置即可。时间复杂度\(O(TN^2)\),需要卡常数。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1505;const int P = 1e9 + 7;template...原创 2018-05-30 13:56:51 · 399 阅读 · 0 评论 -
【BZOJ2648】SJY摆棋子
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000005#define INF 1e9template <typename T> void read(T &x) { x = 0; int f = 1; char c = ge...原创 2018-06-04 13:41:59 · 375 阅读 · 0 评论 -
【BZOJ5250】【2018多省省队联测】秘密袭击
【题目链接】点击打开链接【思路要点】将所有点按照点权从大到小排序,依次加入树中。以每一个新加入的点为根做树形背包,统计包含该点,且包含恰好\(K\)个被加入的点的联通块个数,将该数乘上新加入的点的权值,加入答案。时间复杂度\(O((N-K)*N*K)\),实际上这个时间复杂度是不正确的,但在考场上笔者写了这个程序,通过了全部的数据,并且正解比较反人类,就不写了。【代码】#include<bi...原创 2018-04-09 12:55:14 · 779 阅读 · 2 评论 -
【校内训练2019-07-09】积性函数求和
【思路要点】所求的式子是约数和的形式,考虑枚举一个约数 iii ,计算其被算了多少次,则答案为∑i=1N∑j=1⌊Ni⌋[gcd(i,j)=1]i=∑i=1N∑j=1⌊Ni⌋∑g∣i,g∣jμ(g)i=∑g=1N∑i=1⌊Ng2⌋i⌊Ng2i⌋\sum_{i=1}^{N}\sum_{j=1}^{\lfloor\frac{N}{i}\rfloor}[gcd(i,j)=1]i\\=\sum_{...原创 2019-07-09 14:35:05 · 362 阅读 · 0 评论