摘要:
并查集 const int maxn=100010; int f[maxn]; void init(){ for(int i=1;i<=n;i++) f[i]=i; } int find(int x){ if(x==f[x]) return x; return f[x]=find(f[x]); } 阅读全文
摘要:
hdu3416 Marriage Match IV 传送门 ###题意 给出一个$n(2\leq n\leq 1000)$个点,$m(0\leq m\leq 100000)$条边的有向图,以及起点$A$和终点$B$,计算从$A$到$B$的不相交的最短路的条数。 ###题解 首先通过堆优化$Dijks 阅读全文
摘要:
hdu4614 Vases and Flowers 传送门 题意 有$n(2\leq n\leq 50000)$个花瓶,初始为空,有2种操作: 1.从花瓶$a$开始向后,在空的花瓶中插入一朵花,最多插入$b$朵花,判断是否可以插入至少一朵花,如果可以,计算第一个插花的花瓶编号和最后一个插花的花瓶编号 阅读全文
摘要:
hdu6069 Counting Divisors 传送门 题意 计算$(\sum_d(ik))\ mod\ 998244353$,其中$d(n)$表示$n$的约数个数,其中$1\leq l\leq r\leq 1e12,r-l\leq 1e6,1\leq k\leq 1e7$ 题解 根据唯一分解定 阅读全文
摘要:
线性素数筛 每一个合数都只被它最小的素因子筛去一,筛出$[1,n]$中的所有素数的时间复杂度为$O(n)$ int prime[maxn],cnt; bool is_prime[maxn]; void sieve(int n){ for(int i=2;i<=n;i++){ if(is_prime[ 阅读全文
摘要:
hdu6889 Graph Theory Class 传送门 题意 有一个$n$个节点的完全图,节点编号为$[1,n]$,每条边的权值是$lcm(u+1,v+1)$,其中$u,v$是这条边所连接的节点编号,计算最小生成树的权值模$k$的值 其中$1\leq n\leq 1e10$ 题解 分段打表+区 阅读全文
摘要:
hdu6680 Rikka with Quicksort 传送门 题意 给出函数 $$\left{ \begin g_m(i)=0,0\leq i\leq m\ g_m(i)=i-1+\frac{1}\sum_^(g_m(j-1)+g_m(i-j)),i>m \end \right. \[ 以及$n 阅读全文
摘要:
hdu4027 Can you answer these queries? 传送门 ###题意 给出一个长度为$n(1\leq n\leq 100000)$的序列,序列中所有数的和不超过$2^{63}$。给出$m(1\leq m\leq 100000)\(个操作或者询问,每次操作可以将区间\)[l, 阅读全文
摘要:
hdu1848 Fibonacci again and again 题意 有三堆石子,数量都不超过$1000$,两人轮流取石子,每次取的石子个数只能是斐波那契数列的元素值,判断胜败 题解 计算出斐波那契数列,$SG$函数打表 #include<iostream> #include<cstdio> # 阅读全文
摘要:
hdu5781 ATM Mechine 传送门 题意 $Alice$从取款机里取存款,不知道存款金额,但是知道存款的上限是$K(1\leq K\leq 2000)$,每次想要取出一定数量的存款,如果想取的存款数不超过剩余的存款数,则可以取出,否则会被警告,警告次数超过$W(1\leq W\leq 2 阅读全文