03 2018 档案

摘要:创造一个环出来,可以让环上的边都只访问一次。 对于 $k=1$,答案就是树的直径两边连起来。 倘若 $k=2$,那就先按照 $k=1$ 的求一遍,然后我们发现,如果第二条加的边构成的环和第一条加的边构成的环有交,那么交必定会被访问两次。这样交不但没有减少访问次数,还抵消了第一次的成果。因此把第一次求 阅读全文
posted @ 2018-03-20 18:29 poorpool 阅读(95) 评论(0) 推荐(0)
摘要:懒得学 Dinkelbach迭代法……二分卡过 完全图就不要用 $\mathrm{O}(m\log m)$ 的堆优化了…… 阅读全文
posted @ 2018-03-20 10:13 poorpool 阅读(97) 评论(0) 推荐(0)
摘要:无向图最小环 cpp include include include include using namespace std; typedef long long ll; int n, m, uu, vv, ww, a[105][105], b[105][105], pos[105][105], a 阅读全文
posted @ 2018-03-19 16:07 poorpool 阅读(105) 评论(0) 推荐(0)
摘要:分数规划+KM 算法 这个KM不好,看算法竞赛进阶指南的 阅读全文
posted @ 2018-03-18 16:48 poorpool 阅读(198) 评论(0) 推荐(0)
摘要:参见 "这里" cpp include include include using namespace std; int n, a[305][305], mat[305], exu[305], exv[305], qiw[305]; const int oo=0x3f3f3f3f; bool viu 阅读全文
posted @ 2018-03-17 20:51 poorpool 阅读(159) 评论(1) 推荐(0)
摘要:仙人掌入门简单题。 先看一篇 "文档" 。 cpp include include include using namespace std; int T, n, uu, vv, hea[20005], cnt, dfn[20005], loo[20005], idx, vis[20005]; boo 阅读全文
posted @ 2018-03-17 07:56 poorpool 阅读(156) 评论(0) 推荐(0)
摘要:先求一发 scc 然后缩点,然后根据入度出度为 $0$ 的点的个数乱搞。 cpp include include include using namespace std; int T, n, m, hea[20005], cnt, uu, vv, bel[20005], scc, din, sta[ 阅读全文
posted @ 2018-03-16 19:11 poorpool 阅读(109) 评论(0) 推荐(0)
摘要:二分一下,然后从左到右扫描,扫到左端点就把区间 push 到堆里。 每次有点不符合二分的值时,就贪心地选择右端点最远的 add。 阅读全文
posted @ 2018-03-16 15:44 poorpool 阅读(386) 评论(0) 推荐(0)
摘要:分块+权值逆序对 阅读全文
posted @ 2018-03-16 14:33 poorpool 阅读(155) 评论(0) 推荐(0)
摘要:看 "这里" cpp include include include using namespace std; int n, s[100005], a[100005], c[2][1000005], ans; int lb(int x){ return x& x; } void add(int x, 阅读全文
posted @ 2018-03-15 20:07 poorpool 阅读(125) 评论(0) 推荐(0)
摘要:水题 cpp include include include using namespace std; typedef long long ll; int n, m, p, cnt[105], pri[2000005], ppp, ans=0; const int mod=20170408; boo 阅读全文
posted @ 2018-03-15 18:33 poorpool 阅读(118) 评论(0) 推荐(0)
摘要:扫描线水题。 cpp include include include using namespace std; typedef long long ll; int n, m, dx[300005], dy[300005], cntx, cnty, cnt, uu, vv, ww, aa, bb; l 阅读全文
posted @ 2018-03-15 16:42 poorpool 阅读(227) 评论(0) 推荐(0)
摘要:重点是求树的直径、半径。 参考 "这里" cpp include include include using namespace std; int n, uu[5005], vv[5005], ww[5005], cnt, hea[5005], zui[5005], cii[5005], dis; 阅读全文
posted @ 2018-03-15 16:00 poorpool 阅读(123) 评论(0) 推荐(0)
摘要:最长链是根节点到深度最深的结点的路径。 显然,要么直接走最长链,要么兜兜转转几个圈圈再走最长链,而最长链以外的结点因为要“兜圈”,所以要经过两次。 cpp include include using namespace std; int n, v, hea[105], cnt, uu, vv, zc 阅读全文
posted @ 2018-03-15 10:50 poorpool 阅读(182) 评论(0) 推荐(0)
摘要:对于一个在位置 $i$ 的数,他等于 $i^k+sum_{1,k 1}$。 二项式定理推 $i^k$,矩阵快速幂即可。 cpp include include using namespace std; typedef long long ll; int k, c[15][15]; ll n; con 阅读全文
posted @ 2018-03-15 09:40 poorpool 阅读(315) 评论(0) 推荐(0)
摘要:记 $f_i$ 是从要做 $i$ 步好操作变成要做 $i 1$ 步好操作的期望操作次数。 显然 $f_i=i/n \times 1 + (1 i/n) \times (1 + f_{i+1}+f_i)$,即 $f_i=(n+(n i)f_{i+1})/i$。$f_n=1$。 递推即可。 cpp in 阅读全文
posted @ 2018-03-15 09:03 poorpool 阅读(296) 评论(0) 推荐(0)
摘要:大傻逼题……就是求 $nk$ 个元素选出一些元素,选出的元素的个数要满足模 $k$ 余 $r$,求方案数。 想到 $\binom{n}{m}=\binom{n 1}{m 1}+\binom{n 1}{m}$,递推取模就是了…… cpp include include using namespace 阅读全文
posted @ 2018-03-14 21:52 poorpool 阅读(236) 评论(0) 推荐(0)
摘要:可以发现, $$\displaystyle c^{c^{c^\cdots}}$$ 从下到上对应的模数是 $p,\varphi(p),\varphi(\varphi(p)),\varphi(\varphi(\varphi(p))),\ldots ,1,1$。(为什么有两个 $1$?一会儿再说) 因此当 阅读全文
posted @ 2018-03-14 19:54 poorpool 阅读(195) 评论(0) 推荐(0)
摘要:我们枚举每一个时间点,使得所有科目的时间都小于等于这个时间点,计算安排老师的代价和学生们的不满意度更新答案。 但是枚举太慢了,可以发现,时间点越早,学生们不满意度越小,安排老师的代价越高。即安排老师的代价、学生们的不满意度和时间点的关系一个是负相关一个是正相关的。 因此,安排老师的代价、学生们的不满 阅读全文
posted @ 2018-03-14 15:45 poorpool 阅读(168) 评论(0) 推荐(0)
摘要:```cpp include include include using namespace std; int n, l, k; double dp[205][205][205], ans;//pass [] gates, win [] games, with size[] struct Node{ 阅读全文
posted @ 2018-03-13 19:33 poorpool 阅读(104) 评论(0) 推荐(0)
摘要:容斥搞出 gcd 不是 $1$ 的四元组个数。 "参考" cpp include include include using namespace std; typedef long long ll; int n, cnt[10005], num[10005], uu, fac[35], din; l 阅读全文
posted @ 2018-03-13 18:54 poorpool 阅读(103) 评论(0) 推荐(0)
摘要:nim和线性基 include include include using namespace std; typedef long long ll; int n, uu, ji[35], a[105]; ll ans; int main(){ cin n; for(int i=1; i=1; i ) 阅读全文
posted @ 2018-03-13 11:30 poorpool 阅读(114) 评论(0) 推荐(0)
摘要:模意义下整数高斯消元 cpp include include include using namespace std; int n, m, k, uu, a[305][305]; char ss[15]; int getDay(){ if(ss[0]=='M') return 1; if(ss[0] 阅读全文
posted @ 2018-03-13 10:49 poorpool 阅读(166) 评论(0) 推荐(0)
摘要:一列一列地推就可以了 cpp include include using namespace std; typedef long long ll; int n, m; const int mod=10000007; struct Matrix{ int num[15][15]; Matrix ope 阅读全文
posted @ 2018-03-12 20:52 poorpool 阅读(180) 评论(0) 推荐(0)
摘要:分治即可 当然也可以把矩阵看成元素用矩阵快速幂做 cpp include include using namespace std; int n, k, m; struct Matrix{ int num[35][35]; Matrix operator (const Matrix &x)const{ 阅读全文
posted @ 2018-03-12 19:21 poorpool 阅读(98) 评论(0) 推荐(0)
摘要:欲求 $\sum_{i=1}^n (i,n)$。 显然 $(i,n) \mid n$。记 $d=(i,n)$,枚举 $d$,有多少个 $i \in [1,n]$ 使得 $(i,n)=d$ 呢?换句话说有多少个 $i \in [1,\lfloor n/d \rfloor]$ 使得 $(i,\lfloo 阅读全文
posted @ 2018-03-12 16:48 poorpool 阅读(94) 评论(0) 推荐(0)
摘要:先筛法求出 $[1,n]$ 间的素数,然后枚举每个素数。可以发现,对于每个素数 $x$,它的贡献是 $[1,\lfloor n/x \rfloor]$ 间的有序互质对数。 我们钦定 $(x,y)$ 是 $x \leq y$ 的,发现 $x=y$ 是合法的当且仅当 $x=y=1$。这样就有 $x in 阅读全文
posted @ 2018-03-12 15:22 poorpool 阅读(130) 评论(0) 推荐(0)
摘要:神贪心……写了一个晚上加一个早上。 先考虑只有一个宿管的情况。 首先,如果这个宿舍人多了,多余的人就跑到下一个宿舍。(如果这是最后一个宿舍的话,多的就躺床底下) 如果这个宿舍人少了,但是能从别的宿舍调过来人,那就调人。 如果这个宿舍人少了,从别的宿舍也调不过来足够的人,那就全跑到下一个宿舍去。 让宿 阅读全文
posted @ 2018-03-12 09:51 poorpool 阅读(994) 评论(0) 推荐(0)
摘要:考虑在位置 $p$ 的青蛙。 如果 $p$ 是奇数,答案显然是 $(p+1)/2$。 否则,由于未跳时 $p$ 左边有 $p/2$ 只,则 $p$ 右边有 $n p/2$ 只,则这青蛙是从 $p+n p/2$ 处跳过来的。 阅读全文
posted @ 2018-03-11 21:05 poorpool 阅读(457) 评论(0) 推荐(0)
摘要:位与位间互不影响。一位一位计算。 长度为 $1$ 的区间,选出概率为 $1/n^2$。其余区间,选出概率为 $2/n^2$。(这里的区间 $l \leq r$) 枚举右端点。记 $last_0$ 表示 $0$ 上一次出现的位置。 $last_1$ 同样。 下面我们只研究区间长度不为 $1$ 的。为 阅读全文
posted @ 2018-03-11 19:10 poorpool 阅读(167) 评论(0) 推荐(0)
摘要:若推迟 $u$ 必推迟 $v$,则连边 。 求强联通分量后缩点,答案显然是出度为 $0$ 且 size 最小的 scc。 cpp include include using namespace std; int n, m, h, a[100005], dfn[100005], uu, vv, loo 阅读全文
posted @ 2018-03-11 11:09 poorpool 阅读(276) 评论(0) 推荐(0)
摘要:可重集方案数进阶版。 根据容斥原理,先算出从无穷集 $\{\infty\cdot a_1,\infty \cdot a_2,\cdots \}$ 中取 $s$ 个的方案数,也即 $\binom{n+s 1}{n 1}$,然后减去有一项 $a_i$ 至少为 $f_i+1$ 的方案数,也即 $\bino 阅读全文
posted @ 2018-03-09 20:26 poorpool 阅读(117) 评论(0) 推荐(0)
摘要:求 $$g^{\sum_{d|n}\binom{n}{d}}$$ 特判掉 $g,p$ 不互素,我们目标是求 $\sum_{d|n}\binom{n}{d} \mod 999911658$。 新模数不是质数,但他是 $2 \times 3 \times 4679 \times 35617$,因子没有二 阅读全文
posted @ 2018-03-09 11:17 poorpool 阅读(158) 评论(0) 推荐(0)
摘要:当 $p$ 为素数时 $$ \binom{n}{m} \bmod p=\binom{\lfloor n/p \rfloor}{\lfloor m/p \rfloor}\binom{n \bmod p}{m \bmod p} $$ ~~背会就好~~ luogu 模板 cpp include inclu 阅读全文
posted @ 2018-03-08 20:13 poorpool 阅读(206) 评论(0) 推荐(0)
摘要:$p$ 为素数且 $a,p$ 互素时 根据费马小定理,就是 $a^{p 2}$。 平凡的情况 解 $ax \equiv 1 \pmod p$ 从 $1$ 到 $n$ 的 对于每个 $i$,有 $p=ki+r$。 $ki+r \equiv 0 \pmod p \rightarrow kr^{ 1} + 阅读全文
posted @ 2018-03-08 19:32 poorpool 阅读(140) 评论(0) 推荐(0)
摘要:问题描述 给定你一个 $1 \sim n$ 的排列 $\{p_i\}$,可进行若干次操作,每次选择两个整数 $x,y$,交换 $p_x,p_y$。 请你告诉穰子,用最少的操作次数将给定排列变成单调上升的序列 $1,2,\ldots,n$,有多少种 方式 呢?请输出 方式数 对 $10^9+9$ 取模 阅读全文
posted @ 2018-03-08 18:12 poorpool 阅读(401) 评论(0) 推荐(0)
摘要:问题描述 现在,摆在早苗面前的是一道简单题。只要解决了这道简单题,早苗就可以发动她现人神的能力了: 输出 $$1\ \mathrm{xor}\ 2\ \mathrm{xor} \cdots \mathrm{xor}\ n$$ 输入格式 第一行是一个整数 $T$,代表有 $T$ 组数据。 下来 $T$ 阅读全文
posted @ 2018-03-08 08:56 poorpool 阅读(378) 评论(0) 推荐(0)
摘要:参考资料 "神仙blog" "易懂blog1" "易懂blog2" 《算法竞赛进阶指南》 异或空间线性基 应用背景 现在给你 $n$ 个数 $\{a_i\}$,它们可以 $\mathrm{xor}$ 出很多数。 我们就想,是不是可以换一个数集,使得它 $\mathrm{xor}$ 出来的数集和 $\ 阅读全文
posted @ 2018-03-07 11:28 poorpool 阅读(269) 评论(0) 推荐(0)
摘要:记 $a_{i,j}$ 表示第 $j$ 个开关对第 $i$ 号开关产生的影响,$x_i$ 为对第 $i$ 个开关的操作,则 $$\begin{cases} a_{1,1}x_1\ \mathrm{xor}\ a_{1,2}x_2\ \mathrm{xor}\ \cdots\ \mathrm{xor} 阅读全文
posted @ 2018-03-07 08:53 poorpool 阅读(199) 评论(0) 推荐(0)
摘要:如果单按照距离相等的话既是高次也没有半径,所以因为给了 $n+1$ 组点就想到两两做差。 假如一组点是 $\{a_i\}$ 一组是 $\{b_i\}$,我们能轻易地得出 $$\sum_{i=1}^n(x_i a_i)^2=\sum_{i=1}^n(x_i b_i)^2 \Rightarrow \su 阅读全文
posted @ 2018-03-06 21:51 poorpool 阅读(103) 评论(0) 推荐(0)
摘要:我们人为地搞出来一个全能神,每次调用他他可以给一个节点 $1$ 个石头。 这样,当前的状态就可以由上一秒的状态搞过来,这就像是一个递推。用矩阵加速。 include include include using namespace std; typedef long long ll; int n, m 阅读全文
posted @ 2018-03-06 20:40 poorpool 阅读(291) 评论(0) 推荐(0)
摘要:BSGS 算法,即 Baby Step,Giant Step 算法、~~拔山盖世~~算法。 计算 $a^x \equiv b \pmod p$。 $p$为质数时 特判掉 $a,p$ 不互质的情况。 由于费马小定理 $x^{p 1} \equiv 1 \pmod p$ 当 $p$ 为质数,则要是暴力的 阅读全文
posted @ 2018-03-05 21:44 poorpool 阅读(188) 评论(0) 推荐(0)
摘要:怎样求同余方程组?如: $$\begin{cases} x \equiv a_1 \pmod {m_1} \\ x \equiv a_2 \pmod {m_2} \\ \cdots \\ x \equiv a_n \pmod {m_n} \end{cases}$$ 不保证 $m$ 两两互素? 两两合 阅读全文
posted @ 2018-03-05 16:56 poorpool 阅读(169) 评论(0) 推荐(0)
摘要:把 $a$ 分解成 $p_1^{a_1} \cdot p_2^{a_2} \cdots p_n^{a_n}$,则 $a^b=p_1^{a_1b} \cdot p_2^{a_2b} \cdots p_n^{a_nb}$。约数和即 $$(1+p_1+p_1^2+\cdots+p_1^{a_1b})\ti 阅读全文
posted @ 2018-03-05 10:51 poorpool 阅读(114) 评论(0) 推荐(0)
摘要:即求出一个 $x$ 使得 $L|8 \times (10^x 1)/9$,记 $d=(L,8)$。 $$L|8 \times (10^x 1)/9 \Leftrightarrow \frac{9L}{d}|(10^x 1) \Leftrightarrow 10^x \equiv 1 \pmod {\ 阅读全文
posted @ 2018-03-05 09:19 poorpool 阅读(191) 评论(0) 推荐(0)
摘要:答案就是 $3+2 \times \sum_{i=2}^n \varphi(i)$,记得特判 cpp include include using namespace std; int n, T, phi[1005]; void shai(){ for(int i=1; i T; for(int i= 阅读全文
posted @ 2018-03-04 22:07 poorpool 阅读(112) 评论(0) 推荐(0)
摘要:除法分块。 猜想: 记 $g(x)=\lfloor k / \lfloor k / x\rfloor \rfloor$,则对于 $i \in [x,g(x)]$,$\lfloor k / i \rfloor$ 都相等。 证明: 显然函数 $y=k/x$ 单调递减。显然 $\lfloor k/x \r 阅读全文
posted @ 2018-03-04 19:32 poorpool 阅读(117) 评论(0) 推荐(0)
摘要:以下证明来自算法竞赛进阶指南 引理一: 答案就是 $[1,n]$ 之间约数个数最多的最小的数。 证明: 记 $m$ 是 $[1,n]$ 之间约数个数最多的最小的数。则 1. $\forall i \in [1,m 1],g(i)2 \times 10^9$。 引理三: 答案必能表示成 $2^{c_1 阅读全文
posted @ 2018-03-04 18:31 poorpool 阅读(125) 评论(0) 推荐(0)
摘要:合数总可以由于素数产生。int 范围内的数,它们都有一个 $\sqrt{int\_max}$ 内的质因子。 因此,筛出 $[1, \sqrt{int\_max}]$ 内的质数,再根据这些质数筛掉 $[l,r]$ 之间的合数就可以了。 阅读全文
posted @ 2018-03-04 16:17 poorpool 阅读(98) 评论(0) 推荐(0)
摘要:看 "这里" 阅读全文
posted @ 2018-03-04 09:33 poorpool 阅读(105) 评论(0) 推荐(0)
摘要:看到一坨矩形就要想到扫描线。(poj atantis) 我们把横边竖边分开计算,因为横边竖边其实没有区别,以下论述全为考虑竖边的。 怎样统计一个竖边对答案的贡献呢?答:把这个竖边加入线段树,当前的总覆盖长度 减去 加入前的总覆盖长度 的绝对值 即为这个竖边的贡献。 这样做有一个要求,横坐标相同的竖边 阅读全文
posted @ 2018-03-03 22:00 poorpool 阅读(195) 评论(0) 推荐(0)
摘要:跟线段树求区间最值一样每个节点维护左边开始的最大连续空房间数、右边开始的最大连续空房间数、这个区间内的最大连续空房间数 cpp include include using namespace std; int n, m, opt, uu, vv; struct SGT{ int lma[200005 阅读全文
posted @ 2018-03-03 20:24 poorpool 阅读(182) 评论(0) 推荐(0)
摘要:倒序 处理,线段树保存有多少空位 cpp include include using namespace std; int n, ans[200005], uu[200005], vv[200005]; struct SGT{ int sum[800005]; void build(int o, i 阅读全文
posted @ 2018-03-03 16:57 poorpool 阅读(108) 评论(0) 推荐(0)
摘要:边带权比较好做,然后dp方案 cpp include include include include include using namespace std; int n, pu, pv, uu, vv, fa[605], gx[605], cnt, bel1[605], bel2[605], dp 阅读全文
posted @ 2018-03-02 17:47 poorpool 阅读(137) 评论(0) 推荐(0)
摘要:"参考" 阅读全文
posted @ 2018-03-01 17:22 poorpool 阅读(167) 评论(0) 推荐(0)
摘要:1日 luogu 1494 poj 2912 2日 poj 1417 3日 poj 2828 luogu 2894 luogu 1856 4日 luogu 4135 luogu 4149 poj 2689 poj 3090 5日 poj 3696 poj 1845 poj 2891 poj 1006 阅读全文
posted @ 2018-03-01 17:21 poorpool 阅读(214) 评论(0) 推荐(0)
摘要:```cpp include include include include using namespace std; int n, m, a[50005], blc, bel[50005], cnt[50005]; long long ansfz[50005], ansfm[50005], ans 阅读全文
posted @ 2018-03-01 16:21 poorpool 阅读(159) 评论(0) 推荐(0)