随笔分类 - 其他 - 思维题
摘要:非常好的一道题. 我们考虑枚举哪些三元组不能成为答案. 然后你发现这成了一个立方体并问题. 通过枚举 $c$ ,可以将问题转化为二维矩形并问题. 由于从大到小枚举 $c$,所以并是不断增大的,然后增大的话就会让 $a/b$ 延伸到极大值位置. 所以只有 $a,b$ 是单调的,才会对答案有影响,这么更
阅读全文
摘要:显然先用单调栈求出一个位置向左/右延申的最大长度(即这些区间中当前位置是最大值位置) 然后我们发现我们可以离线,然后按照最大值位置依次添加线段,每次用线段树查一个区间和. 然后我们想查满足最大值位置在 $[l,r]$ 之间,$[l,r]$ 内区间和. 这个显然满足可减性(即最大值位置在 $[1,r]
阅读全文
摘要:A Prefix Sum Primes 显然,除了 2 以外的质数都是奇数,所以最优的排布方式应该是 21222222.... 然后 2 不够的时候再放 1 code: #include <bits/stdc++.h> #define N 200009 #define setIO(s) freope
阅读全文
摘要:神题呀,我们观察到行走的方式一定是一条链+若干条环. 然后环可以看成是一对括号,所以来一个基于括号序的 DP. code: #include <bits/stdc++.h> #define ll long long #define N 3040 #define setIO(s) freopen(s"
阅读全文
摘要:这种图论问题都挺考验小思维的. 首先,我们把从 $x$ 连出去两条边的都合并了. 然后再去合并从 $x$ 连出去一条原有边与一条新边的情况. 第一种情况直接枚举就行,第二种情况来一个多源 bfs 即可. code: #include <cstdio> #include <string> #inclu
阅读全文
摘要:用 LCT 维护颜色相同连通块,然后在线段树上查一下逆序对个数就可以了. code: #include <cstdio> #include <algorithm> #include <cstring> #include <string> #define N 100005 #define ll lon
阅读全文
摘要:非常好的一道图论问题. 显然,我们要求城市间的最小生成树,然后查询路径最大值. 然后我们有一个非常神的处理方法:进行多源 BFS,处理出每一个城市的管辖范围. 显然,如果两个城市的管辖范围没有交集的话连边一定不是优秀的(一定会有一种都在管辖范围之内的连边方式来代替这种连边方式) 然后由于每一个点只属
阅读全文
摘要:显然,我们可以将询问按照规定时间从小到大排序,依次处理. 那么我们显然要求合法的点中从 $n$ 号点出发到达点 $i$ 的最迟时间,我们令这个为 $f[i]$ 而 $f[i]$ 显然可以用最短路来求. 如果求 $n$ 次最短路的话显然超时,但是我们可以对于每一个节点所连边排序,然后每次枚举之前没有扩
阅读全文
摘要:好神的一道计数题呀. code: #include <cstdio> #include <algorithm> #include <cstring> #define N 5000003 #define ll long long #define mod 998244353 #define setIO(
阅读全文
摘要:分类讨论一下奇环和偶环的情况. code: #include <bits/stdc++.h> #define N 200006 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int edges=1; int hd[N]
阅读全文
摘要:题意:略 我们发现对于 $n$ 棵树,有用的是所有树的相对大小关系. 而随机生成 $[0,1]$ 之间的实数的相对大小关系可以等价于随机生成一个排列的相对大小关系(我们可以认为这个小数是无限长的,一定能比较出两者大小) 此问题就转化为:对于 $n!$ 种排列,权值综合为多少 $?$ 我们定义一些互相
阅读全文
摘要:树的计数问题考虑使用 Prufer 序列,那么对于一颗合法的树有 $\sum deg[i]-1=n-2$. 对于每个点的度数都确定的情况,方案数为 $\frac{n-2}{\prod a[i]}$. 构建生成函数 $F(x)=\sum_{i=0}^{m-1} \frac{x^i}{i!}$,然后 $
阅读全文
摘要:这道题真的还是简单的一批..... 我当时要是参加考试的话该多好(凭这一道题就能进前 5 了) 十分显然的指数型生成函数. 令 $f[i]$ 表示有 $i$ 个点的答案. 然后显然有 $f[i]=\sum_{j=1}^{i}\binom{i}{j} \times \frac{j!}{j} \time
阅读全文
摘要:code: #include <vector> #include <cstdio> #include <cstring> #include <map> #include <set> #include <algorithm> #define N 300005 #define MAX 320005 #d
阅读全文
摘要:对于点对 $(x,y)$ ,考虑求出其循环节. 那么有 $(x+\frac{x}{B}) \mod A=(x+kB+\frac{x+kB}{B}) \mod A$ 其中 $\frac{x+kB}{B}$ 向下取整显然可以写成 $\frac{x}{B}+k$ 则有 $kB+k=0(\mod A)$ 解
阅读全文
摘要:A code: #include <cstdio> #include <algorithm> #define N 1000000 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std;
阅读全文
摘要:显然从左到右,从上到下依次处理每个格子步数是最少的. 而由于我们的顺序是固定的,每次操作等于是一个区间修改,单点查询. 利用二维差分的方式可以轻松实现. code: #include <cstdio> #include <cstring> #include <string> #include <ve
阅读全文
摘要:思路自然的码农题. 显然分类讨论一下编号在 $[l,r]$ 的点与 $p$ 的子树关系. 如果都在 $p$ 的子树内就是个区间 $lca$. 否则,就二分第一个满足 $p$ 的祖先且子树内部没有 $[l,r]$ 之间的点. 二分验证的话要用主席树. code: #include <cstring>
阅读全文
摘要:题意:令 $f(i)$ 表示对于 $\binom{n}{i}$ 种包含 $i$ 个点的最小连通块的总节点个数和. 面对个数和/价值和且点和点之间没有限制条件的问题时可以考虑单独处理每个点的贡献. 考虑点 $j$ 对 $f(i)$ 的贡献. 那么 $j$ 对 $f(i)$ 有贡献时分两种情况. 1.
阅读全文
摘要:将问题转化为统计以 $i$ 结尾的 $AA$ 串个数. 我们将后缀树建出来,然后按照启发式合并的方式每次合并两个 $endpos$ 集合. 那么就有:$[x-mx,x-1] \rightarrow x$ 与 $x \rightarrow [x+1,x+mx]$ 的贡献. 统计第一种贡献的话在线段树上
阅读全文

浙公网安备 33010602011771号