OI/ACM
nullptr__
这个作者很懒,什么都没留下…
展开
-
(转载)求答案模一个数的结果
做题时,经常要求“答案模一个数”的结果。并且这个数往往是1000000007。如果只有乘法和加法,那么我们对此毫无压力。但是,除法出现时,我们往往需要用高精除法。而费马小定理给我们带来了福音!从此,我们再不用为了区区一个模1000000007而用高精除法了。费马小定理:若p是质数,且a、p互质,那么a^(p-1) mod p = 1。果断忽略证明转载 2015-08-20 14:54:05 · 623 阅读 · 0 评论 -
(题解)(Splay)NOI2004郁闷的出纳员
题目比较简单,用splay动态维护一个可以整体删除的集合,不需要打下标,打个上标维护size求kth,用delta记录偏移即可完成所有操作。 调试了两个小时,后来发现因初始工资而走的员工不能算是走的员工,题目中没说明,太坑了。在splay中,常用INF哨兵,但我没发现有人用null哨兵,我发现null哨兵能够大幅简化代码,同时具有一定的容错性。程序的容错性非常重要,即使参数原创 2015-08-20 15:14:10 · 1724 阅读 · 0 评论 -
最大权闭合子图的简单证明
以前只会写,没证明过,搜了一下网上的证明,太复杂了,我并不是说公式化的严谨的证明不好,而是认为那种证明不利于直观的理解,常常有这样的情况:看证明每一步都很正确,但是以后你没办法用几句话概括对这个式子的理解,你也不知道这样证明的思想是什么,主要原因是证明太复杂,难于从整体上去把握,这样也不利于根据理解推广出新的结论。从某种意义上说,白话点的简要证明更利于直观的理解,所以我试着自己证明了一原创 2015-08-20 14:45:35 · 1289 阅读 · 0 评论 -
最长上升子序列的O(nlgn)解法
感觉网上说的太复杂了…… 首先换一种状态表示:设f[i]为长度为i的上升子序列中末尾元素的最小值,初始化f[0]=INT_MIN,f[1~N]=INT_MAX然后对于每个元素,更新集合 { f[i] | f[i-1]以上方法O(n^2)由于f[i-1]所以用于更新的a[j]一定比更新上一位置的那玩意大,所以f数组单调递增,前面比a[j]小的更新不走,只有更新中间原创 2013-12-03 19:17:23 · 587 阅读 · 0 评论 -
(题解)(搜索)POJ2069 Super Star
很水,一遍A……题目大意是给定N个点,用一个球覆盖这些点,求球的最小半径本蒟蒻认为这题不能算是模拟退火,应该算是变步长爬山不断逼近最远点并调整,可以理解为先走一个大的方向,再不断缩小步长,直至得出解网上有人说0.97会WA,我只想说精度开大点会死啊!!N的规模才30,就算开到0.999也不可能TLE#include #include #include #include原创 2015-08-20 15:01:53 · 482 阅读 · 0 评论 -
网络流建模的一般方法
网络流建模的过程实际上是找到流与方案的对应关系的过程,找到了这种对应关系后,用如下方法检验这个关系是否正确。网络流模型正确 当且仅当(1)可行方案 等价于 可行流(满足流量守恒的流)*注意:如果用增广路的性质建模,可以用归纳法,先看初始流是否是一种可行的方案,假设增广前是一种可行方案,证明增广后的方案可行,然后证明可行的方案都是可行流。(2)最优方案 等价于 最优流(最小费原创 2015-08-20 14:55:57 · 2129 阅读 · 0 评论 -
(题解)(数论)AHOI2007 BOX
给定n,求x^2=1(mod n)的所有解想了很久没想出来。。我还是太弱了。。最近我经常看不出结论,或者不知道是否正确不敢写。。首先变形一下式子,(x+1)(x-1)=0(mod n)接着是最重要的一步,要知道一个结论:x和x+2的公因数只有可能为2。。。我推出了x和x+k的公因数必不超过k,用gcd递归定理证明非常简单:gcd(x+k,x)=gcd(x,(x+k) mod原创 2015-08-20 15:10:48 · 435 阅读 · 0 评论 -
浅谈C++容器效率的优化
作者:岳知涵在NOIP中,C++的容器的用途非常广泛,但经常因常数过大而超时。怎样才能提高它们的效率呢?我们知道,容器是存储同一类对象的对象,既然“对象”我们无法改变,那么我们只能从“存储”入手,不难想到,不同容器在实现上的根本区别是它们对应着不同的内存组织方式,内存管理无疑是这种实现的核心,所以优化内存管理是加快容器效率的最好途径之一。一、内存分配器简介怎样才能优化内存管理呢?很简单原创 2013-11-24 15:41:06 · 1845 阅读 · 0 评论 -
"活"的模拟退火算法
看到网上很多人只会用"死"的模拟退火算法,网上的资料也全是"死"的模拟退火算法,所以我来说一说"活"的模拟退火算法……大家都知道算法步骤:先取一个初始状态集合和一个足够大的温度T,若T没有降到Tmin,对于集合中的每个状态,求出它能扩展出的最优状态,若更优则替换原解,否则以e的ΔE/T次方的概率替换原解,取最优解作为答案当具体到某个实际问题时,这样可能不能起到好的效果,不是每个问题原创 2015-08-20 14:51:43 · 657 阅读 · 0 评论 -
谈谈我对旋转卡壳算法本质的理解
我学很多东西的过程中,经常无法理解现有的资料的表述,感觉那些讲的太肤浅,最后靠自己推倒证明才能理解,旋转卡壳也是其中的一个……关于旋转卡壳的资料,大概有这几个:http://cgm.cs.mcgill.ca/~orm/rotcal.frame.htmlhttp://www.cppblog.com/staryjy/archive/2009/11/19/101412.htmlhttp:原创 2015-08-20 14:59:51 · 2349 阅读 · 0 评论