韦尼克区受损者如何说话

1.关于hash算法

  刚开始学hash是为了比较字符串,后来用hash_table来存储大量元素、快速查找。最近想到的一个用法是,若是咱们能给每一个不一样的元素对应一个的$p^i$的话,能够将一个集合转化为一个哈希值,从而快速比较两个集合是否相等。网络

 

  队友C:hash是不可撤销的!数据结构

  然而真的是这样吗?这个问题取决于咱们决定$i$的方式。spa

  在字符串比较中,咱们同时须要位置和内容信息,有了每一个前缀的hash值,咱们显然知道前面的每一个位置对应的$i$,能够经过调整得到任意区间的hash值。虽然区间数($n^2$)复杂度每每是没法接受的,可是在须要考察的区间长度为定值时这个算法仍是很优秀的。游戏

  再看上面关于集合比较的问题,须要的信息只有内容,hash至关于一个模糊化的存储,只保留了集体信息而丢弃了单独元素的信息。虽然这种处理不支持查询某个元素是否在集合中,可是若是已知一个元素在集合中,我又知道它加入时对应的$i$,删除操做就是可行的。字符串

  因此咱们再考虑hash是否可撤销,就是看可否找到正确的$i$,以及可否准确、不过分地进行删除。数学

 

  咱们通常印象中的hash每每有大素数、unsigned long long一类的特征。可是hash本质上就是一种“模糊化”的思想,把没法承受的存储、比对压缩到只剩下某些关键信息。其实求和、取max等等操做均可以是看做广义的hash,用一个结果来表明这个集合中我关注的特质。反向推想,一些难以处理的比较问题也能够尝试用hash解决,如两个集合是否相同。甚至抽取的特征也不必定涵盖了全部我须要的信息,余下就是在正确率和效率之间寻找平衡,神经网络等处理大规模数据的算法都有这种思想的体现。hash的正确几率,一是要看不一样集合是否对应了不一样的hash结果,二是要看这个结果是否能充分反映我关注的信息。hash

 

eg:有n个点和m条无向边,边的长度均为1。问按顺序加边,加到多少条时开始存在从a到b的长度为5的点不重复路径,其中a和b是两个给定点。n、m<=1e5。table

 

 

2.博弈论哲学效率

  某些srs看起来一本正经胡说八道,实际上只会把博弈论推给队友,这是毋庸置疑的。

 

  反证法:假设这个状态必败,必然先手能够选择另外一操做来把此处的选择留给后手,与必败矛盾。可能只存在于较大规模或具有一些基本特征的局面下,如至少有两个儿子的树节点等。小范围仍需手玩。

  分离法:经过简单操做把原局面分为无关的几部分,或者删除原局面的一部分,总之把游戏规模变小。

  Excel法:当队友C开始用Excel枚举每种局面的结果,他很快就会AC了。Excel确实是手动打表的好帮手,效率远胜纸质计算。

 

 

3.笛卡尔模型化

  队友C:如今咱们就获得一个经典的二维数点/三维偏序问题。

  把问题转化为一个数点问题、区间问题经常让事情变得简单。一对必须同时选取的数能够看做区间的左右端点、两种权值要求能够看做平面上的两维、元素的标号是数轴上的一维,如此种种。题目的要求自己没有改变,咱们的思惟却惯于快速应对这种形式。代码也能够有序地分红转化、处理两部分,甚至做证实、检查时能够彻底分开考虑。

  笛卡尔坐标系中的模型老是更容易和数据结构创建联系。咱们对数据结构的认识也不该该仅仅从维护信息、算法复杂度角度,还要考虑它有怎样的降维效果,它自己的特质适合怎样把我须要的答案分离、统计。处理信息的顺序,也即时间维度,也能够做为解决问题的辅助,有天然降维的功能。

 

eg:n 我的,选白色、黑色各有一个权值,要使全部人选择后权值极差最小,而且有一些两我的不能选同色的限制。n<=1e5。

 

 

4.数据范围骗局

  “操做数不超过m,m<=1e18”——但实际上按照题目规则,超过2n的操做都是没有意义的。

  “k是两整点之间距离的平方,k<=1e7”——能够拆成两数平方之和的数字在这个区间里并很少,能够预处理出全部组合方案,从而把两个维度分开,实现快速统计和查找。

  “强制在线,每次输入数据须要^opt”——若opt只能为0/1/2之类的小数字,^的结果十分有限,甚至能够根据最后答案倒推。

  题目中看似很大的输入数据,可能因为必须知足某些规则而变得十分有限。让出题人造数据时感到麻烦的限制,或许偏偏是选手的可乘之机。从出题人的角度考虑输入数据可能性,说不定能帮助发现题目性质。

 

 

 

本文送给没有出现可是独自承担了绝大部分数学题的队友Y,以及另外一位我十分但愿但不能成为个人队友的同窗。

相关文章
相关标签/搜索