摘要: copy from hzwer @http://hzwer.com/1234.html 侵删 1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 1.2 中级数据结构 1. 堆 2. 并查集与带权并查集 3. hash 表 自然溢出 双hash 阅读全文
posted @ 2017-01-06 14:42 Czarina 阅读(978) 评论(0) 推荐(0)
摘要: 题意: 斜堆(skew heap)是一种常用的数据结构。它也是二叉树,且满足与二叉堆相同的堆性质:每个非根结点的值都比它父亲大。因此在整棵斜堆中,根的值最小。但斜堆不必是平衡的,每个结点的左右儿子的大小关系也没有任何规定。在本题中,斜堆中各个元素的值均不相同。 在斜堆H中插入新元素X的过程是递归进行 阅读全文
posted @ 2017-01-03 10:03 Czarina 阅读(263) 评论(0) 推荐(0)
摘要: orzzrt.... 题意:给n个点n条边,问能形成几个无向连通图公式:ans=Σ(k=3~n){[n^(n-k)]* (n-1)!/2(n-k)!}推导:ans=Σ(k=3~n)(f(n,k)*h(k)) f(n,k)表示能形成的森林个数,h(k)表示能形成的环的个数 h(k)=n!/2n n!: 阅读全文
posted @ 2016-12-29 16:37 Czarina 阅读(238) 评论(0) 推荐(0)
摘要: 首先可以推出来如果i没有带头叛变,那么i的父亲也一定不会带头叛变,证明显然 所以最劣情况初始的叛徒肯定是叶子,并且带头叛变的人一定是从某个叶子往上走一条链 f[i]表示i不带头叛变的话最小的x 那么我们对所有子树大小>k的f值取max即是答案 f[i]=max j为i的儿子 (min(f[j],si 阅读全文
posted @ 2016-12-12 22:44 Czarina 阅读(354) 评论(0) 推荐(0)
摘要: 由Lucas定理C(n,k)=C(n/2333,k/2333)*C(n%2333,k%2333)%2333 则ans=ΣC(n,i),(i<=k) =C(n/2333,0)*C(n%2333,0)+C(n/2333,0)*C(n%2333,1)+...+C(n/2333,0)*C(n%2333,23 阅读全文
posted @ 2016-12-12 11:52 Czarina 阅读(331) 评论(0) 推荐(0)
摘要: 因为long long还有PE的事WA了一下午TAT 考虑一段可行区间的平均值肯定>=k 也就是说将每个数减去k以后,一段可行区间的和非负,求一段最长区间。 一段区间的和肯定是两个前缀和的差 先求出前缀和,考虑要想让答案更优,被减数应该靠后而且大,减数应该靠前而且小 so维护两个单调队列然后two- 阅读全文
posted @ 2016-12-11 18:41 Czarina 阅读(339) 评论(0) 推荐(1)
摘要: 直接dp就好了 每个人肯定会去选最大的,用dp[i]表示选了后i个点时先手-后手的最大值(因为从后往前扫才好转移啊 QwQ~) dp[i]=max(c[j]-dp[j-1]),(j<=i) 直接维护max值就好了~ 阅读全文
posted @ 2016-12-11 10:41 Czarina 阅读(185) 评论(0) 推荐(0)
摘要: 用平面曼哈顿距离最小生成树或者莫队算法都可以吖QwQ~ 然而显然后者更好写(逃~) 莫队怎么写就看图吧QwQ~ 话说我一开始没开long long然后拍了3000组没拍出错交上去Wa了QAQ 阅读全文
posted @ 2016-12-10 17:08 Czarina 阅读(249) 评论(0) 推荐(0)
摘要: 海带头又上线了QwQ~ 这是一个奇怪的lis问题 显然一定存在一种最优答案使所有辨认不清的数都在答案中。 【为什么呢】因为你完全可以用一个‘N’来替换一个‘K’啊QwQ~ 那么在选完所有‘N’之后,一个为‘K’的数的值val[i]就可以理解为val[i]-num,num指它之前‘N’的个数(因为是严 阅读全文
posted @ 2016-12-09 16:04 Czarina 阅读(319) 评论(0) 推荐(0)
摘要: 听说正解是链表,然而被我暴力水过了 先开vector记录每个数在原串中出现的位置 之后对于每个匹配串的每一位,找比当前位置大的第一个当前元素是哪个,有就更新,没有就“NIE” 阅读全文
posted @ 2016-12-09 15:57 Czarina 阅读(157) 评论(0) 推荐(0)