自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 快速幂(例题+模板)

模板1://来自lra师哥 typedef long long ll;ll q_pow(ll a, ll b){ ll ans = 1; while(b > 0){ if(b & 1){ ans = ans * a % mod; } a = a * a % mod; b >>= 1; } return ans;} 例题1:https://sdnuoj.rainng.com/problem/show/1081代码:#include &lt

2021-01-30 10:09:44 261

原创 Dijkstra算法(单源最短路)

1.储存这里仍用一个二维数组来储存顶点之间边的关系。除此之外,我们还需要一个dis数组来储存1号顶点到其余各个顶点的初始路程。如:dis = {0,1,12,inf,inf,inf}(这里inf是无穷大)我们将此时dis数组中的值称为最短路径的“估计值”(没有计算过最短路径之前1号顶点到其余各点之间的路程)。2.松弛既然是计算1号顶点到其余各点之间的最短路程,那就先找一个离1号顶点最近的顶点。通过数组可知离1号顶点最近的顶点是2号顶点。接下来看2号顶点有哪些出边呢?有2->3和2->4

2021-01-29 20:46:42 278

原创 Floyd-Warshall算法(多源最短路径问题)

1.用一个二维数组存储图的信息。如:map[1][2] = 2,表示1号城市 到2号城市的路程是2。注意:1.两个城市之间如果没有路,则设两个城市之间的路程为无穷大(inf)2.一个城市到自己的路程是0.如:map[1][1] = 0.3.这些公路是单向的2.思想:根据以往的经验,如果要让任意两个点(例如从顶点a到顶点b)之间的路程变短,只能引入第三个点(顶点k),并通过这个顶点k中转,即:a->k->b,才可能缩短原来从顶点a到顶点b的路程。那么这个中转顶点k是1~n中的哪一个呢

2021-01-29 11:32:43 278

原创 阶梯博弈(尼姆博弈进阶)

例题问题描述:(网址:http://poj.org/problem?id=1704)DescriptionGeorgia and Bob decide to play a self-invented game. They draw a row of grids on paper, number the grids from left to right by 1, 2, 3, …, and place N chessmen on different grids, as shown in the fo

2021-01-27 17:14:44 324

原创 公平组合博弈(Impartial Combinatori Games)

1、定义:(1)两人参与。(2)游戏局面的状态集合是有限。(3)对于同一个局面,两个游戏者的可操作集合完全相同(4)游戏者轮流进行游戏。(5)当无法进行操作时游戏结束,此时不能进行操作的一方算输。(6)无论游戏如何进行,总可以在有限步数之内结束。2、模型:给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负。事实上,这个游戏可以认为是所有公平组合游戏(Impartial Combinatori Games)的抽象模型。其实,任何一个ICG都可以

2021-01-27 17:03:43 354

原创 Fibonacci博弈

1、问题模型:有一堆个数为n的石子,游戏双方轮流取石子,满足:(1)先手不能在第一次把所有的石子取完;(2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。 约定取走最后一个石子的人为赢家。2、解决思路:结论:当n为Fibonacci数的时候,必败。f[i]:1,2,3,5,8,13,21,34,55,89……用第二数学归纳法证明:为了方便,我们将n记为f[i]。1、当i=2时,先手只能取1颗,显然必败,结论成立。2、假设当i<=k时,结

2021-01-27 16:59:17 99

转载 博弈序章

博弈是信息学和数学试题中常会出现的一种类型,算法灵活多变是其最大特点,而其中有一类试题更是完全无法用常见的博弈树来进行解答。 寻找必败态即为针对此类试题给出一种解题思路。此类问题一般有如下特点:1、博弈模型为两人轮流决策的非合作博弈。即两人轮流进行决策,并且两人都使用最优策略来获取胜利。2、博弈是有限的。即无论两人怎样决策,都会在有限步后决出胜负。3、公平博弈。即两人进行决策所遵循的规则相同。理论铺垫:1、定义P-position和N-position:其中P代表Previous,N代表Next

2021-01-27 16:51:25 91

原创 尼姆博弈

有3堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取1个,多者不限,最后取光者得胜。思路:首先自己想一下,就会发现只要最后剩两堆物品一样多(不为零),第三堆为零,那面对这种局势的一方就必败。①那我们用(a,b,c)表示某种局势,首先(0,0,0)显然是必败态,无论谁面对(0,0,0) ,都必然失败;②第二种必败态是(0,n,n),自己在某一堆拿走k(k ≤ n)个物品,不论k为多少,对方只要在另一堆拿走k个物品,最后自己都将面临(0,0,0)的局势,必败。③仔细分析一下,(1,2,3

2021-01-27 16:48:29 852

原创 威佐夫博奕

威佐夫博弈(Wythoff’s game)是指的这样一个问题:有两堆各若干个物品,两个人轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最后取光者胜利。我们用(a[k],b[k]) (a[k] ≤ b[k] ,k=0,1,2,…n)来表示两堆物品的数量,并且称这个为局势。首先我们来从最简单的情况开始分析:如果现在的局势是(0,0),很明显此时已经没有办法再取了,所以肯定是之前的人在上一局中取完了。假设现在的局势是(1,2),那么先手只有四种取法。(

2021-01-27 16:31:06 266

原创 巴什博奕(Bash Game)

巴什博弈(Bash Game,同余理论):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,

2021-01-26 16:40:29 726

原创 stringstream(2021-1-25)

1.头文件:#include < sstream >< sstream> 主要用来进行数据类型转换,由于 使用 string 对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。简单说,相比c库的数据类型转换而言, < sstream> 更加安全、自动和直接。< sstream > 定义了三个类:istringstream、ostringstream 和

2021-01-25 16:14:18 170

原创 sscanf(2021-1-25)

sscanf函数例题链接:https://sdnuoj.rainng.com/problem/show/1113代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;ll lena, lenb, m, n, sum;​int main(){ char a[10 + 2], b[10 + 2], A[100], B[100]; while(cin >> A >&gt

2021-01-25 11:31:07 120

原创 讲得好的网址

递归与分治:https://www.cnblogs.com/monkey-home/p/12565709.html排序:https://www.cnblogs.com/onepixel/p/7674659.htmlDP:https://www.bilibili.com/video/BV1X741127ZMfrom=search&seid=1760671235022556274

2021-01-24 13:04:58 109

原创 奇奇怪怪的错误原因

1.写好了函数但未在主函数里调用2.计算多个sum时未在每次计算之前初始化为03.No写成NO4.未初始化5.For循环括号里写的变量是j,后面的语句变量就变成了i6.Sort函数+n中n的值少17.While前面写的自变量是j,括号里的循环条件变成了关于i的,导致陷入了死循环,不出结果。8.忘记给while循环设置出口9.Main写成mian。显示错误语句:ld returned 1 exit status扩展:10.第1043题,没有优化?

2021-01-24 13:03:35 97

原创 前缀和差分例题

前缀和1657.前缀和ⅠTime Limit: 1000 MS Memory Limit: 32768 KBTotal Submission(s): 49 Accepted Submission(s): 24Description给出 个整数 .次查询,每次查询给出一个整数 ,要求输出 .Input第一行有两个正整数, 表示数组长度, 表示询问次数.第二行有 个整数 .接下来 行,每行有一个整数 表示查询 ...Output对于每组询问输出一个整数代表 的

2021-01-24 12:53:48 431

原创 DP学习笔记(闫氏DP分析法)

闫氏DP分析法1.从集合角度 来分析DP问题DP问题都是有限集中的最优化问题(从某个集合中求最值数量或是否存在)枚举时间复杂度太高,用DP可以优化。2.DP为什么可以优化(DP分析过程)1.化零为整(状态表示):1)集合:f(i)这个集合可以表示一类东西,而不只是一个东西2)属性:集合中存的数字和集合的关系(一般有三种:max,min,count)2.化整为零(状态计算):用椭圆表示集合f(i),再将f(i)划分成若干个子集。1)划分条件:不重复、不遗漏2)划分依据:找最后一个不同点

2021-01-24 11:40:26 733 1

原创 2021-1-17(0x3f3f3f3f)

一、哈夫曼编码思想先把数量小的石子合并,数量大的石子最后合并,这样最后的代价就是最小的。对应的就是哈夫曼树的构建过程,该算法保证了二叉树的权值最优性。二、0x3f3f3f3f无穷大。1.0x3f3f3f3f的十进制是1061109567,是10^9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。2.由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷

2021-01-17 16:40:55 200 1

原创 师哥讲课

前缀和、差分等循环最好从1开始int最大值2^31-1最小值是-2^31超时:关同步(解除封印)但有时候还是比scanf慢,scanf更温和做题第一步:分析int够不够快读:m = read();

2021-01-10 21:42:23 83

原创 2021-01-10

C++内存模型1.五个区域:栈区:先创建的后被销毁。很小,很珍贵。在局部变量里,main函数里面。堆区:mallcao,free创建的时候储存的地方,由自己控制,其他是由编译器控制。全局/静态变量区:放全局变量DATA:已经初始化的BSS:未初始化的(每次运行前初始化为0)代码区:常量区:2.不能返回局部变量指针:在函数里创建一个变量,变量存在栈里面,出函数之后,原本存储在栈里面的变量就被销毁了,所以不能返回。3.内存泄露:new,delete。创建完变量之后要释放,不然就会永远存在,丧

2021-01-10 19:19:50 164

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除