摘要:
别偷吃我的骨灰 阅读全文
摘要:
https://codeforces.com/problemset/problem/1800/F (对于每个i做两个状压就可以用二进制运算去算,这教导我们不要随便压3个状态因为没法算) 阅读全文
摘要:
状态为f[i][j][k],和g[i][j][k], i为i子树内,j为放置的摄像头个数,f中k为内部向外延伸的长度,g中k为外部向内延伸长度 当内部摄像头j*k>=siz[i]时一定可以全覆盖,要特殊记录,这也是复杂度为n方的关键 三维太多,用encode和decode压缩空间 考虑转移 阅读全文
摘要:
潜入行动 为例, 主要是dfs部分的代码,每次合成两个树,然后再把新的树往上面和,转移会非常容易 #include<bits/stdc++.h> using namespace std; #define LL long long const int N = 1e5 + 10, mod = 1e9 + 阅读全文
摘要:
主要方法:用多个数组表示不同状态,同时维护两个dp数组 #include<bits/stdc++.h> using namespace std; #define int long long const int N = 500 + 10, mod = 1e9 + 7; int n, k, f[N][N 阅读全文
摘要:
50分做法:n方dp 考虑\(f[i][j]\)为前i个数,第j个数是i之前与i染色不同的数,则考虑i+1染色与哪个数相同,可转移到\(f[i+1][i], f[i+1][j]\) 65做法:优化到n*值域 100分做法:继续优化式子达到线性 还有人类智慧做法,但是能优化就不需要智慧 #includ 阅读全文
摘要:
上了一学期的课感觉老师讲的太好了,于是我概念一点不懂但是已经明白了博弈论的精髓 阅读全文
摘要:
板子题 符合堆和二叉搜索树性质,treap也是一种特殊笛卡尔树 堆性质就是树下层元素的值都小于等于或大于等于上层元素的值 二叉搜索树是一个左儿子小于自身,右儿子大于自身的树,在笛卡尔树中,通常为数组索引 这时候就可以用单调栈来维护右链建树 #include<iostream> #include<al 阅读全文
摘要:
可以再加一个struct把整个树封装起来。。跟oiwiki学的 #include<bits/stdc++.h> using namespace std; #include<bits/stdc++.h> using namespace std; struct Node{ Node *ch[2]; in 阅读全文
摘要:
P2418 yyy loves OI IV 有两种转移情况,一种是差值在范围内用线段树查找转移,一种是同段连续的作为一段来转移。 注意旧的一段已经结束了新的一段要+1 #include<bits/stdc++.h> using namespace std; #define pii pair<int, 阅读全文
摘要:
多年以后是否还会回忆起被图论支配的恐惧 阅读全文