11 2018 档案
摘要:蒟蒻好紧张啊 蒟蒻好紧张啊 蒟蒻好紧张啊 蒟蒻好紧张啊 一开始方向好像走错了 乱推了个拓扑的式子 然后FST了 然后还不肯放弃 挣扎了20分钟 又受到了刚上来都打完球了的ldx的diss "我靠,这么傻逼的题你还没A吗" 好吧的确是傻逼题 先缩点 设s是1所在的scc的编号 考虑逆行的使用姿势 对于
阅读全文
摘要:听了教练的考前须知 蒟蒻紧张的要死 只想做信心题 同时满足:c或者d在x子树里 a或者b在y子树里 其中x=lca(a,b),y=lca(c,d) cpp include define N 100005 using namespace std; template inline void read(T
阅读全文
摘要:设f[i][j][p]表示长度为i 最高位为j p出现的个数 显然 f[i][j][p]=sigma{f[i 1][k][p]} 其中k是次高位 但是最高位出现的那么多次都没有被我们算进去 但是很显然只需要加上(i 2)^10就阔以了 然后常规的分[1,b],[1,a 1]解决 常规的分成两部分 一
阅读全文
摘要:听了教练的考前须知 蒟蒻紧张的要死 只想做信心题 cpp include define N 50005 using namespace std; int n,k,tot,first[N]; struct Tree { int to,next; }edge[2 N]; inline void adde
阅读全文
摘要:迟到的题解 昨天乱翻的时候感觉这道题挺有意思的 一眼看过去状态压缩乱搜 转移方程大概是 设f[i]表示从0转移到i的遗憾值之和 f[i]=sigma(f[j])+val[i] dis[i] dis[i]=sigma(dis[j]) 其中j是i的子集,dis[i]表示从0转移到i的方案数之和 妙啊有7
阅读全文
摘要:虽然转移方程可以一眼看出 但是烦就烦在为何要排序 有人说这是一个贪心,又有人说这是一个保障正确性的。 就按照贪心的想法好了:在保证正确性的情况下尽量多的挂钩。 cpp include define N 2005 define INF 0x3f3f3f3f using namespace std; i
阅读全文
摘要:对于当前新加入的一条路径 他产生的贡献分为两种 1.另一条路径的LCA在当前路径上 2.当前路径的LCA在另一条上 对于情况1: 可以维护当前点到根节点有多少个LCA,查询只需查询u,v, 2 lca(u,v),修改需要对lca的子树+1 对于情况2: 显然的树上差分,查询就是lca子树的前缀和,修
阅读全文
摘要:可以先不管符合条件的 先统计出所有的可能走法(最短路条数 最短路条数) 然后减去会相遇的 会相遇的分为在点相遇和在边相遇 在点(设为p)相遇:先保证点在最短路上 然后从s到p的最短路等于从t到p的最短路 在边(设为(x,y,z))相遇:同样需要保证边在最短路上(需要判断三次 同样玄妙♂) 以及相遇的
阅读全文
摘要:很无奈 离正解就差一句话 简单的带权并查集 没啥好说的 也可以差分约束 cpp include define N 100005 define M 200005 define D 10005 using namespace std; template inline void read(T &x) {
阅读全文
摘要:迭代加深搜索就是限制递归的层数,然后一层层地扩大限制的层数 我们记录当前深度,以及当前应该搜出几个数 设计剪枝: 1.当当前深度乘上2^r(r是还没有选的数)比m还小 那肯定是不行的 因为最大的扩展方式就是选两个最大的数 2.这一层比上一层数小
阅读全文
摘要:当答案可以分为两半时 为了降低复杂度 可以使用折半搜索 对前半部分 搜出所有可能的和 用map记录 对后半部分 同样也是搜出可能的和 如果前半部分存在一个和 能拼起来 那ans++ cpp include define N 45 define ll long long using namespace
阅读全文
摘要:n个集合的容斥其实就是 总的 减去两两相交的 加上三个相交 减去四个相交 加上五个.....(奇加偶减) 这道题就是一个lcm的容斥 我们用搜索来实现 枚举选的数 需要加个剪枝 当前lcm已经超过了m cpp include define N 35 define int long long usin
阅读全文

浙公网安备 33010602011771号