http://www.lydsy.com/JudgeOnline/problem.php?id=4517 组合数+错排公式 #include<cstdio> #include<iostream> using namespace std; #define N 1000001 ; long long fac[N],inv[N],f[N]; void read(int &x) { x=; char c=getchar(); while(!isdigit(c)) c=getchar…
http://www.lydsy.com/JudgeOnline/problem.php?id=2425 题意转化: 给定一个集合S,求S的全排列<给定排列 的排列个数 从最高位开始逐位枚举确定 没有枚举到的位就是可重复集合的全排列 公式是 n!/ (n1!*n2!……) 高精? 用它的推导公式:C(n,n1)*C(n-n1,n2)*C(n-n1-n2,n3)…… #include<cstdio> #include<cstring> #include<iostream&…
BZOJ4517 Sdoi2016 排列计数 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条件的序列可能很多,序列数对 10^9+7 取模. Input 第一行一个数 T,表示有 T 组数据. 接下来 T 行,每行两个整数 n.m. T=500000,n≤1000000,m≤1000000 Output 输出 T 行,每行一个数,…
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1616  Solved: 985[Submit][Status][Discuss] Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条件的序列可能很多,序列数对 10^9+7 取模. Input…
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1792  Solved: 1111[Submit][Status][Discuss] Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条件的序列可能很多,序列数对 10^9+7 取模. Input…
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色之后,任意满足要求的四联通块一定可以是 黑色-->紫左-->紫右-->白色 只要破坏三个箭头中的一个即可 所以可以构建最小割模型 1.源点向黑色格连流量为格子代价的边 2.黑色格向相邻的紫色格连inf边 3.与黑色格相邻的紫色格向与白色格相邻的紫色格连 流量 为 两个紫色格较小代价 的边 4…
http://www.lydsy.com/JudgeOnline/problem.php?id=4515 把lca带进式子,得到新的式子 然后就是 维护树上一次函数取min 一个调了一下午的错误: 当一条线段完全在另一条线段之下时,用下面的完全覆盖上面的 判断条件为  两线段在范围内没有交点 然后若 新的线段的某一个端点<原来线段的对应的一个端点,就覆盖 错误的写法: 判断的时候 把两条线段在端点处相等也加了进去 即判断条件为  两线段在范围内没有交点 或 交点 在线段端点出 那么 若 新的线段…
http://www.lydsy.com/JudgeOnline/problem.php?id=4516 考虑在后面新加一个字母产生的影响 假设是第i个 如果不考虑重复,那么会增加i个不同的字符串 考虑重复的话,就是找到 最小的j,满足s[j……i] 在之前出现过,那么i的贡献就是j-1 即查找与某个串的最长公共后缀 如果把整个串倒过来,就变成了每次在前面加一个,查找最长公共前缀 这个利用后缀数组的height数组可以解决 有一个很显然的结论是: 若ijk满足  rank(i)<rank(j)<…
http://www.lydsy.com/JudgeOnline/problem.php?id=4513 f[i][0/1][0/1][0/1] 从高到低第i位,是否卡n的上限,是否卡m的上限,是否卡k的下限 的方案数 g[i][0/1][0/1][0/1] 对应 f 的和 #include<cstdio> #include<cstring> #include<iostream> using namespace std; ][][][],g[][][][]; templ…
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j 位置的数是区间[i,j]的最大值和次大值 提供p2的攻击力:i,j位置的数有一个是区间[i,j]的最大值,另一个不是次大值 记录L[i].R[i] 分别表示i左右第一个大于k[i]的位置 p1的贡献: 1.点对(L[i],R[i])    2.点对(i,i+1) p2的贡献: 1.点对(L[i],…