摘要: 对于这个博弈,有一种经典的例题: 1.只有一堆数量为n的石子; 2.只有两个人参与这个游戏; 3.两个人轮流取1--m个石子; 4.最先取完石子的人赢; 输出: 如果先手赢,输出1,否则输出0; 题解: 如果n=m+1,因为最多取m个。所以先手不论取多少个,后手都能一次拿完。 所以,要想先手赢 n= 阅读全文
posted @ 2017-05-01 13:50 ouyang_wsgwz 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 1.除法 2.减法 跟除法的方式类似。 略。 阅读全文
posted @ 2017-04-22 21:05 ouyang_wsgwz 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 大数自然不能用普通的int,或者long long.因为是肯定存不下的。所以就有两个选择,一个是通过字符串来进行运算,可以看之前的博客。 http://www.cnblogs.com/jaydenouyang/p/6482977.html 这里只介绍通过数组进行的运算。 1.加法 比如要求 1234 阅读全文
posted @ 2017-04-22 20:28 ouyang_wsgwz 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 有A,B,C,三点,判断该3点为什么顺序排序。 利用矢量叉积判断是逆时针还是顺时针。 设A(x1,y1),B(x2,y2),C(x3,y3),则三角形两边的矢量分别是: AB=(x2-x1,y2-y1), AC=(x3-x1,y3-y1) 则AB和AC的叉积为:(2*2的行列式) |x2-x1, y 阅读全文
posted @ 2017-04-13 21:16 ouyang_wsgwz 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 0 在C语言中很简单对输出的要求,然而在C++中有一丝的麻烦。 在下面的代码中所需要的是 #include<iostream> 基本输入/输出库 #include<iomanip> 输入/输出操作符库 1.通用操作符 有三种通用的操作符: (1)换行(endl) “endl”跟C语言种的“\n"是一 阅读全文
posted @ 2017-04-12 14:10 ouyang_wsgwz 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 简单的次方求模很简单,就像上文一样。 不过比较难的就是大数的次方求余。 对于a^b mod c .令N=a^b. 所以 N mod c =(N1 mod c * N2 mod c * N2 mod N3 * ~~~Nn mod c ) mod c . 有了这个式子,所以: a^b=a^(b/2) * 阅读全文
posted @ 2017-04-10 20:47 ouyang_wsgwz 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 其实同余定理很简单,只是两个等式: (a+b)%c=(a%c+b%c)%c; (a*b)%c=(a%c+b%c)%c; 对大数取余的模板(大数必须用string来存): string a; int m=0; for(int i=0;a[i]!='\0';i++) m=((m*10)%n+(a[i]- 阅读全文
posted @ 2017-04-07 21:15 ouyang_wsgwz 阅读(350) 评论(2) 推荐(0) 编辑
摘要: //前向星 #define N_node 1000 //点的个数 #define N_edge 5000 //边的条数 typedef struct //节点信息 { int to ,next; //to 点,next E中下标信息 int cost; //当前边的权值 }STAR; STAR E[ 阅读全文
posted @ 2017-04-04 21:32 ouyang_wsgwz 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 解决存在<<<负环>>>的图的单源最短路径: 判断有无负环: 如果某个点进入队列的次数超过N次则存在负环(SPFA无法处理带负环的图) 这里,只介绍用bfs(深搜)的SPFA,如果想了解更多,参考http://www.cnblogs.com/scau20110726/archive/2012/11/ 阅读全文
posted @ 2017-04-04 19:56 ouyang_wsgwz 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 只有五行的Floyd最短路算法: 核心代码 每次都更新通过k点,然后从i到j的最短路程。。。 阅读全文
posted @ 2017-03-31 21:46 ouyang_wsgwz 阅读(254) 评论(0) 推荐(0) 编辑