09 2018 档案
摘要:思路: 考虑组合数学。 当所求中没有重复的时候,方案数就是$C_{n + 1}^{k}$ 当有重复的时候... 设相等的数字之间的距离为$len$ 当取0个数时,方案数就是$C_{n 1}^{k}$ 取1个数时,方案数大概是$2 C_{n 1}^{k 1}$ ,但是如果相同的数字之间那一段没有取任何
阅读全文
摘要:题意:求净利益。 思路: 其实我也不怎么懂题面。 不过这种题一般来说就是从最大的开始选。 所以考虑贪心。 那么代价如何处理呢?? 我们考虑两个序列同时选数,把代价每次记录到一个序列的和上,那么对于两次的净利益求最大即可。
阅读全文
摘要:思路: 求交集最大老套路,排序之后用堆维护即可。 c++ include using namespace std; const int mod = 1e9+7; const int maxn = 1000010; inline int read() { int q=0,f=1;char ch = g
阅读全文
摘要:思路: 头皮发麻的操作... 理解一下题意会发现:排名为$i$的前缀正好是第$i$个前缀。 所以问题就变成了求$1 len$的平方和,注意取模即可。 c++ include using namespace std; int n; const int mod = 1e9+7; long long an
阅读全文
摘要:题意:... 思路: $LCA$乱搞+启发式合并(堆) c++ include using namespace std; const int maxn = 200010; const int maxm = maxn v[maxn]; struct edge { int to; int nxt; }e
阅读全文
摘要:题意:。。。咕咕懒得写了。 思路: 裸的记搜... c++ include using namespace std; define ll long long mapmp[200010]; ll L,R; inline int read() { int q=0,f=1;char ch = getcha
阅读全文
摘要:题意:给定一个序列和一个长度,求序列中子区间长度$ =len$的最大的中位数。 中位数定义:if$(len\%2) num = {len + 1} \over {2}$,else $num ={len} \over {2}$ 思路:套路题,二分答案x,将序列$ =x$的数标为1,其他标为 1,判断是
阅读全文
摘要:题意:求树上两条路径有无祖先。 思路: 瞎搞$LCA$啊。。。 可惜我$LCA$打错了,我居然调了半小时...qwq c++ include using namespace std; const int maxn = 200010; define travel(i,x) for(int i = he
阅读全文
摘要:题意:求一个树上背包~~ 先贴代码存一下,好像打挂了。 c++ include using namespace std; const int maxn = 400; const int INF = 0x3c; int dp[maxn][maxn][3]; inline int read() { in
阅读全文
摘要:题意:带温度最短路。 思路: 我们将温度从小到大的将边加入,用并查集维护连通性。 如果一旦联通那么跑一遍$spfa$就可以得到答案。 复杂度$O(m log m)$ c++ include using namespace std; define ll long long const int maxn
阅读全文
摘要:题意:求一个最小的$m$,保证$\prod a[i] x = m!$ 思路: 考虑$m!$里面有多少个东西?? $m$个。 且是一个排列。 那么求一个最小的$m$使得前面的式子成立? 我们考虑如何统计$m!$中每个因子出现的次数? $m/(x^k)!$ 那么就好办了,我们对于序列中的每一个数直接分解
阅读全文
摘要:题意: 给定2T个串,带修的判断两个串是否按规则一样?? 思路: 两个串是“抄袭的”肯定就是: 1.长度一样。 2.特殊字符位置一样 3.对于每个$x$在两个串中出现位置一样,且数目一定。 复杂度$O(TL)$ ~~懒得写代码~~
阅读全文
摘要:题意:求最少LIS覆盖... 思路: 计算$LIS$时我们一般用$dp$表示到当先位置时以当前位置结尾的$LIS$最长长度。 那么这个数组保证单调不降,我们考虑二进制表示。 然后就是转移了... 不过蜜汁$RE$啊,自测能过... c++ include using namespace std; i
阅读全文
摘要:题意:求剩余面积。 首先吐槽题号:究竟$JZOJ$有多少未公开的题目... 思路: 简单的一批啊... 不知道为啥上午不过下午就过了?? 难道是海螺姑娘光顾我?? 多说了都是灵异故事... 其实就是一个线性递推,每次新增一个点判断一下是否行列被占用,未被占用的话就可以使得可行的行列 1. c++ i
阅读全文
摘要:题意:求一个较大的多重背包对于每个i的方案数,答案对998244353取模。 思路: 生成函数: 对于一个$V$ 设: $f(x) = \sum_{i=0}^{oo} x ^ {V i} = {1 \over {1 x ^ V}}$ 那么就是求这个生成函数的积。 首先将$f(x)$取$ln$为$g(
阅读全文
摘要:题意:统计本质不同的串的个数。 思路: 显然后缀自动机,对于每个串建一个$SAM$统计即可。 c++ include using namespace std; int root; int lst; int tot; const int maxn = 2000010; const int mod =
阅读全文
摘要:题意:自己搜吧。。。 思路: 记二元组$(x,l)$表示当前为$x$且之前有$l$个连续数与$x$相同。 并且维护up和low数组表示取到最大/最小值时,连续序列的长度。 正一遍,反一遍,搞定。 我排序手抖达成$a.r and b.r$,调了1小时... c++ include using name
阅读全文
摘要:题目:从u到v经过多少条边。 思路: 考虑他是怎么走的?? 从$u$到$v$一定是$fa[u]$,$fa[fa[u]]$,反正就是走$LCA$,那么如果算出每个点到父亲的期望步数,和父亲到该点的期望步数就可做了。 设$f(x) : x fa,g(x) : fa x$. 那么: $f(x) = {1
阅读全文
摘要:题目: 求有多少组二元组$(l,r)$使得:$1O(nlogn)$ 离线处理:$x$在区间内出现了多少次即可。 总复杂度:$O(nlogn)$ c++ pragma GCC optimize(2) include using namespace std; define ll long long co
阅读全文
摘要:思路: 就是考虑一个结论 对于$1 mod$时,显然取模为0,所以出题人很好心的没有给$10^{18}$的点。 代码我不知道为什么老是爆炸... c++ include using namespace std; define ll long long const int mod = 1e6+3; i
阅读全文
摘要:$T1$ 直接考虑二分就可以了。。。 二分spfa判断,直接AC一发! $T2$ 推式子题。。。其实如果不想推的话可以直接高精。。。 c++ include using namespace std; define ll long long const int maxn = 4010; const i
阅读全文
摘要:题意:求满足题意的方案数。 思路: 显然的计数类$dp$。 不难发现,令$f(x) = \prod_{i=1}^{2m}{x_i} $. 在找一个$x'$使得$f(x') = \prod_{i=1}^{2m}{n/x_i}$ 那么,$f(x') = n^{2m}/f(x) n^m$ 所以说,对于$$
阅读全文
摘要:题意: 给定两个数n和m,求在$[1,2^n)$范围内包含至少两个相同数的概率。 思路: 其实也挺好想的,我们首先推出概率: $A(2^n,m)/2^{nm}$ 然后化简,考虑一个结论: 对于任意的$x$,$110^6+3$时,乘积中必然有一项是$m$,那么结果一定为0. 搞定!
阅读全文