![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法树之其他算法与技巧
九羽-
日有所进,月有所变,终有所成。
展开
-
F - A word game( 深刻理解SG函数 )
F - A word game( 深刻理解SG函数 )对于SG值的定义:SG=0先手必输,否则先手必赢。 对于有多个并列情况取SG值的异或。之前一直有个误区,认为两个必赢的并列情况异或一下就是必输了,其实不是,因为SG不是一个bool类型的值,SG的定义是取所有子情况的SG值没出现的最小值即mex(). 所以两个先手必赢的并列情况取异或不一定必输,比如SG1=1, SG2=2, SG1^SG2=3, 还是先手必赢。对于这个题,有26堆石子,石子的个数都给出,两人轮流操作,1.选择一堆石子。2.拿.原创 2020-11-30 20:43:14 · 470 阅读 · 0 评论 -
【摩尔投票法】O(n)求众数 不用桶
O(n)求众数 不用桶众数的求解方式一般是用桶来计算,但是有时候数据比较大,桶开不了这么大,就需要用map,这就在O(n)的基础上加了个log。摩尔投票法基于这样一个事实,当一个数的重复次数超过数组长度的一半,每次将两个不相同的数删除,最终剩下的就是要找的数。当然,我们要求一个数列的众数,这个数列首先要存在众数。我们这个算法的前提条件是这个数列确实有众数存在( 并且这个众数出现的次数要大于数列长度的一半 )。为了更容易理解,我们将每一种数想象成一个帮派有众数帮,和非众数帮,这些..翻译 2020-10-01 11:06:51 · 324 阅读 · 0 评论 -
( 其他算法与技巧 )【 C++ bitset 用法 】
( 其他算法与技巧 )【 C++ bitset 用法 】C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。下面是具体用法构造函数bitset常用构造函数有四种,如下bitset<4> bitset1; //无参构造,长度为4,默认每一位为0 bitset<8> bitset2(12); //长度为8,二进制保存,前面用0补充 string s = "100.转载 2020-08-11 10:17:40 · 205 阅读 · 0 评论 -
( 其他算法与技巧 )【 线性递推 Berlekamp-Massey算法 】
( 其他算法与技巧 )【 线性递推 Berlekamp-Massey算法 】原理请看:https://blog.csdn.net/qq_39972971/article/details/80725873算法用处: 求解一个数列的最短线性递推式比如:1 2 3 4 5 6 7 8 9 的最短递推式是 { 2,-1 } 即 f ( i )= 2 * f ( i-1 ) + (-1) * f ( i-2 )数列{1,2,4,9,20,40,90}的递推式即为R5={0,0,10,0}。 ...翻译 2020-08-08 10:39:32 · 341 阅读 · 0 评论 -
( 其他算法与技巧 )【 田忌赛马问题 】
( 其他算法与技巧 )【 田忌赛马问题 】选手A的马,顺序和能力都是明确的。选手B的马,能力是明确的,问如何安排出场顺序可以赢下更多的场次。以前一直是枚举来做,就是按照 B 选手最差的 i 匹马去输给 A 选手最强的马,其他的再比较。但是代码很难实现,不是很简洁。今天新学的方式,先对两个选手的马从小到大排序,i 指针指向A选手第一个,j 指针指向B选手第一个,当 j 指向的马大于 i 指向的马说明可以赢,i++,j++,ans++ ; 否则,j 这匹马谁也赢不了,只能去输,j++..原创 2020-08-02 09:47:05 · 474 阅读 · 0 评论 -
( 其他算法与技巧 )【 快读快写模板 】
( 其他算法与技巧 )【 快读快写模板 】用于读入输出整数过慢。原理就是读入字符比数字快(不要问我为什么)#include <bits/stdc++.h>using namespace std;inline int read(){ int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();} while(ch>='0'&a.原创 2020-05-11 18:27:50 · 225 阅读 · 0 评论 -
( 其他算法与技巧 )【 JAVA大数 】
( 算法树之其他算法与技巧 )【 JAVA大数 】在 Java 中,有许多数字处理的类,比如 Integer类,但是Integer类有一定的局限性。我们都知道 Integer 是 Int 的包装类,int 的最大值为 2^31-1。若希望描述更大的整数数据时,使用Integer 数据类型就无法实现了,所以Java中提供了BigInteger 类。BigInteger类型的数字范围较...转载 2020-04-14 18:02:44 · 135 阅读 · 0 评论 -
( 其他算法与技巧 )【 莫队 】
( 其他算法与技巧 )【 莫队 】推荐阅读:https://www.cnblogs.com/WAMonster/p/10118934.html众所周知,莫队是由莫涛大神提出的,一种玄学毒瘤暴力骗分区间操作算法,它以简短的框架、简单易记的板子和优秀的复杂度闻名于世。然而由于莫队算法应用的毒瘤,很多可做的莫队模板题都有着较高的难度评级,令很多初学者望而却步。然而,如果你真正理解了莫队的算法...翻译 2020-02-01 13:49:17 · 225 阅读 · 0 评论 -
【 数列做差性质 】G - Pyramid ( 打表 + 逆元 )
G - Pyramid ( 打表找规律 + 逆元 )题意:求n行三角形中等边三角形个数,图二的三角形也算。 n<=1e9思路:打表找下规律,打表方法:把所有点扔坐标系里n^3爆搜即可打出来为 1,5,15,35,70,126,210...没感觉,作差 4, 10, 20, 35, 56, 84还是没感觉,作差 6, 10, 15, 21, 28发现此时...翻译 2020-01-13 14:57:12 · 482 阅读 · 0 评论 -
( 其他算法与技巧 )【 三分算法 】
HDU - 4355 ( 三分算法 )类似于二分查找,三分搜索法也是比较常用的基于分治思想的高效查找方法。但是和二分不同,二分只适用于单调函数,三分用于单峰函数三分搜索的实现主要是判断midl和midr所在值的大小。以凸函数为例(凹函数类似,只是判mid大小的时候保留小的即可(其实也是保留离极值最近的mid)),先以left和right为端点计算出它们的中点midl,然后再以mid...翻译 2019-12-10 14:50:56 · 418 阅读 · 0 评论 -
( 其他算法与技巧 )【 模拟退火 】
( 其他算法与技巧 )【 模拟退火 】先看题!!题目描述如图:有n个重物,每个重物系在一条足够长的绳子上。每条绳子自上而下穿过桌面上的洞,然后系在一起。图中X处就是公共的绳结。假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到地上),且忽略所有的摩擦。问绳结X最终平衡于何处。注意:桌面上的洞都比绳结X小得多,所以即使某个重物特别重,...翻译 2020-01-12 10:02:30 · 196 阅读 · 0 评论