摘要:
插入线性基代码: void add(int x){ for (int i = 30;i >= 0;i--){ if (x&(1 << i)){ if (d[i]) x ^= d[i]; else{ d[i] = x;break; } } } } 性质: 原序列里面的任意一个数都可以由线性基里面的一些 阅读全文
摘要:
Day1 T1 考虑怎么计算一个长为 len 的序列 a 的 Gobo sort 的期望次数。令 \(b_i\) 表示 a 中 i 出现的次数 那么期望次数为$E = len!\prod\limits_ b_i$ 考虑30分,可以直接暴力递归求解,每次取最小值就好了 freopen写错了,可能还有一 阅读全文
摘要:
之前留了许多坑,有时间会慢慢补,恩我一定会的 Day1 T1 只与约数有关,而看100以内的测试点,最多10个约数,\(m \leq 3\),本来想把$2m$个约数分成对应的小部分和大部分,然后,枚举小部分,统计可行的贡献,出了些问题吧 然后发现如果我暴力枚举所有情况好像也不是很多的样子,然后写了个 阅读全文
摘要:
解决问题: 这类问题一般是给你一个长度为 n 的序列,然后让你统计有一些特性的点对(i,j)有多少个,又或者说是找到一对点(i,j)使得一些函数的值最大之类的问题 算法流程: 找到当前序列中点mid 将所有的点分为三类 第一种是$1\leq i\leq mid\ 1\leq j\leq mid$ 第 阅读全文
摘要:
111 阅读全文
摘要:
我们先从一道经典的例题入手: [SDOI2011]消耗战 题意: 给出一棵树,每条边有边权。 有m次询问,每次询问给出k个点,问使得这k个点均不与1号点(根节点)相连的最小代价 \(1\leq n\leq 2.5\times 10^5,1\leq m\leq 5\times 10^5,1\leq \ 阅读全文
摘要:
整体二分的定义: 在信息学竞赛中,有一部分题可以使用二分的办法来解决。但是当这种题目有多次询问且每次询问我们对每个查询都直接二分,可能会收获一个 TLE。这时候我们就会用到整体二分。整体二分的主体思路就是把多个查询一起解决。(所以这是一个离线算法) 可以使用整体二分解决的题目需要满足以下性质: 询问 阅读全文
摘要:
一、线段树合并的思想 线段树合并,顾名思义,就是建立一棵新的线段树保存原有的两颗线段树的信息。 二、线段树合并的流程 假设我们合并到了两棵树的pos位置 如果a有pos位置,b没有,那么新的线段树pos位置赋成a,返回 如果b有pos位置,a没有,赋成b,返回 如果此时已经合并到两棵线段树的叶子节点 阅读全文
摘要:
解决问题: 猫树是解决无修改区间或树上询问的高效算法. 对于常规问题,比如区间最值,区间最大子段和。我们常常能用线段树等数据结构达到,构造 O(n),询问 O(logn)的时间复杂度。 对于这些做法,只有一点不好,询问复杂度 不够优秀,且对于一些特定问题,线段树的push_up合并也不好写。 但对于 阅读全文