08 2018 档案
摘要:题目大意:将 n 个数 ai分成若干连续的段,使得每段的和都相等,求最多可以分成多少段。 思路: 考虑ai的和为sum,那么每一段的和就是约数。 对于每一个d,考虑其是否合法。 1e6之内用桶统计不会超时。 c++ include using namespace std; int n; int an
阅读全文
摘要:思路: 似乎和某次培训的题很像啊。。。 将左括号记为1,右括号记为 1,那么最终一定加和为0,然后再求最小前缀和。 用dp解决即可。 c++ include using namespace std; define ll long long const int maxn = 1000010; cons
阅读全文
摘要:思路: 考虑树形dp。 我们设$dp[i][j][0/1]$表示在$i$为根的子树中花费$j$单位时间,最终回到/不必回到$i$的最大收益。 转移三种: $dp[x][j][0] = max(dp[x][j][0],dp[x][j k 2][0] + dp[y][k][1]);$ $dp[x][j]
阅读全文
摘要:思路: 并查集按秩合并维护出现时间。 最早连接时间就是树上连接最大值。 $qwq$我居然把路径压缩和按秩合并打到一个程序里了...OvO c++ include using namespace std; const int maxn = 1000010; struct edge { int to;
阅读全文
摘要:思路: 差分+排序 c++ include using namespace std; define ll long long const int maxn = 1000010; int n,m; int a[maxn]; ll ans; int main () { freopen("lock.in"
阅读全文
摘要:思路: 记$dp[i][j] = 0/1$来表示第$i$个动物报的数字是$j$,有无必胜策略。 判断有没有转移就可以了。 输出直接对于每一只动物,看$dp[i][1 k]$有没有必胜策略就行了。 c++ include using namespace std; int n,m,k; int a[50
阅读全文
摘要:题意:求$\sum_{1 using namespace std; define ll long long const int maxn = 500005; char s[maxn]; int cnt = 1; int lst = 1; int rt = 1; int son[maxn = 1; i
阅读全文
摘要:二分+单调队列优化dp+后缀自动机 c++ //CTSC2012 熟悉的文章 include using namespace std; const int maxn = 1e7; define ll long long char s[maxn]; struct node { int fa; int
阅读全文
摘要:后缀自动机初探(xiajiang) 后缀树$(Suffix Tree)$ 对于一个字符串,把它的所有后缀插入到$Trie$中就是一个后缀树。 当然字母存在边上,最终的点可以用一个特殊符号如:$\&$来表示这个后缀结束了。 考虑对树压缩路径,也就是把原字符串一个个后缀存到点上。 这样的话节点数就达到了
阅读全文
摘要:题意:给一棵树,每个节点有个值,问两点间叶子节点数$?$ 思路: $SAM$经典题目... 考虑每个节点的出度小于20,可以用$Trie$树,对于答案一定是树上的一个线段,统计一下扔到$SAM$就可以了... c++ include using namespace std ; define ll l
阅读全文
摘要:思路: 比较单纯的求一下next数据和失配的次数。
阅读全文
摘要:题意:求一个凸函数的最优解。。。 思路: 好吧在题意里已经说出来了。 对于被卡斜率的,只能$orz$了。。。 其实据说还有$12s$评测这种操作,对不起我省$5s$。 好吧不废话了,看看应该怎么做。 暴力的话直接记$dp[i][j][0 2]$表示当前做到第 $i$ 棵子树用了$ j$ 条链并且当前
阅读全文
摘要:题意:求一个最长子序列长度使得相邻的按位与不是0. 思路: (首先$\%$一波出题人) 感觉思路有点奇怪,考虑为什么会$\&$成0,要是0就必须每一位都至少一个是0,那么我们可得$f[i]$表示第 i 位是1的最长子序列的长度,随便转移一下就可以了。 c++ include using namesp
阅读全文
摘要:题意:求NOI的合法串。。。 思路: 首先这个似乎和后缀自动机没关系(话说TJ不考后缀自动机??),其实就是一个$DP$套$DP$,考虑如果不看兑奖串就是一个LCS,当出现时多记一维即可。 c++ include using namespace std; const int maxn = 10001
阅读全文
摘要:题意:理论上是给定一张完全图,有边权,在给一些单向边求最短路。 思路: 我充分体会到了我图论的菜。 理论上建图肯定是不能$n^2$的,考虑如何优化呢? 将边权异或值二进制替换,最后一遍最短路就行,记得把$n$开到$2^k$
阅读全文
摘要:题意:维护一个矩阵的左对齐和上对齐,并输出结果。 思路: 正解似乎是树状数组?? 可惜并不知道怎么写,我们就可以考虑用平衡树裂点来维护矩阵。 然后就发现还有动态开点线段树的这种操作... 后来。。。其实一棵主席树完全可以干爆此题。。。。。。。 c++ include include include
阅读全文
摘要:Day2:线段树(可持久化),平衡树(splay,treap),并查集,树链剖分,动态树,树状数组,点分治(可持久)。 线段树模板 树链剖分 c++ include include include include using namespace std; struct tree{int l,r,su
阅读全文
摘要:题意:求个树形依赖背包 思路:对于环用tarjan缩点即可。 c++ include using namespace std; const int maxn = 2010; struct edge{ int to; int nxt; }edge[maxn]; int w[maxn]; int v[m
阅读全文
摘要:题意:维护斜率看到的楼房。 思路:线段树维护一个斜率。 啊啊啊,(某次考试)调了一年OTZ. c++ include using namespace std; const int maxn = 100010; inline int read(){ int q=0,f=1;char ch=getcha
阅读全文
摘要:题意:求带修最短路。 思路:一开始想的就是LCT维护一棵最小生成树,后来发现还有动态开点SPFA的这种操作...神了
阅读全文
摘要:题意:求对抗分数差值最大。 思路:状压dp,维护一条轮廓线,最大化分差。可以发现上一行的棋子个数永远比这一行多。 c++ include using namespace std; const int INF = ~0U 1; int n,m; int f[(1= 0; i) { if((V & (1
阅读全文
摘要:题意:求“方便值” 思路:树链剖分维护修改即可,似乎还有点分树的做法~
阅读全文
摘要:题意:求所有字典序大于给定序列且满足条件的排列个数之和。 思路: 考虑dp即可,打表出卡特兰数优化,直接dp可以44... c++ include using namespace std ; define int long long const int mod = 998244353ull; inl
阅读全文
摘要:题意:求01成立。 并查集维护,记录一个变量判断决策。 c++ include using namespace std; define int long long const int maxn = 4000010; int f[maxn]; inline int find(int x){ retur
阅读全文
摘要:题意:给定一棵树和点的$Access$次数,求切换链的最大值。 考虑修改时实边与虚边的贡献,用$LCT$维护此树。 c++ // luogu judger enable o2 include using namespace std; const int maxn = 2000010; const i
阅读全文
摘要:Day1:二分答案,三分查找,快速幂,欧拉筛素数 | 题目:火星人,Bridge,GCD,Prime Path 二分答案 【JSOI 2008】 火星人 对于第一个操作用$hash + 二分$来求得,二三直接平衡树维护即可。 【Bridge】 混合图欧拉回路模板,还是挺有意思OTZ... 具体就是首
阅读全文
摘要:题目描述: 给定炸弹和爆炸范围,求对于每个炸弹连锁爆炸的炸弹总和对$1e9+7$取膜 思路: 为啥都是线段树+TS+tarjan呢? 实在是搞不懂~~ 线性$O(n)$递推即可. c++ include using namespace std; const int maxn = 1000010; c
阅读全文
摘要:题目大意:给定三棵树,求点对$(x,y)$使得$d1(x,y) + d2(x,y) + d3(x,y)$最大。 Solution: 前两棵树我们可以用构造虚树的方式来求$d1(x,y) + d2(x,y)$。 记点对$(x,y)$在第一棵树上的LCA是fa,那么$dis_all(x,y) = dep
阅读全文

浙公网安备 33010602011771号