
算法
文章平均质量分 55
su_ren
这个作者很懒,什么都没留下…
展开
-
poj-1704
题目是一个nim游戏的改版 可能各位大牛看来不成问题,但是萌新入手还是不错的 只需要前后两个看成一个石子堆就可以了。 可能会与疑问,棋子往左石子堆就增加了,但是右边的棋子移动,就石子堆减少了,可以回到原来的状态,所以可以用nim游戏的解法。 奇数个棋子就把其中一个单独拿出来就行了,或者往里面加一个位置为0的。 然后有个坑是数据是没经过排序的。这里wa了2次,果然萌新。 #include原创 2017-06-16 11:51:05 · 366 阅读 · 0 评论 -
AVL树的插入操作(旋转)图解
AVL树的概念 转载至:cc 在说AVL树的概念之前,我们需要清楚二茬搜索树的概念。对于二叉搜索树,我们知道它可以降低查找速率,但是如果一个二叉搜索树退化成一棵只剩单支的搜索树,此时的查找速率就相当于顺序表中查找元素,效率变低,时间复杂度由原来的O(logN)变为O(N)。 此时就有了AVL(高度平衡二叉搜索树),从它的名字就能知道转载 2017-06-16 21:29:33 · 1633 阅读 · 0 评论 -
hdu-3790
问题描述:参考hud3790 就只是一般的dij加几行代码。 其中注意更新最小花费应该是在路程相同时更新,初始化好一般没什么问题。 AC代码: #include #include #include #include #include #include using namespace std; const int maxn=1000+10; const i原创 2017-07-15 11:40:15 · 364 阅读 · 0 评论 -
【转】找出游戏的必胜策略——Nim与Grundy数小记
原文地址:http://endless.logdown.com/posts/2014/05/05/find-out-the-winning-strategies-of-the-game-nim-and-grundy-number-notes 原文访问真心慢,所以转下,侵权必删 见 Codeforces 197A Plate Game。 (经典博弈,我们选修课老师在上课时提到过此题)转载 2017-07-15 11:43:45 · 3067 阅读 · 1 评论 -
矩阵快速幂
计算过程中避免溢出,最好用long long来定义 有必要时用unsigned long long 水水的代码如下,权当记录 #include #include #include #include #include #include using namespace std; typedef vector >mat; typedef vector vec;原创 2017-07-15 20:53:48 · 349 阅读 · 0 评论 -
poj-3734
挑战算法程序设计的例题 描述见问题出处 AC代码: #include #include #include #include #include #include using namespace std; typedef vector >mat; typedef vector vec; const int mod=1e4+7; mat mul(mat a,原创 2017-07-15 20:56:07 · 390 阅读 · 0 评论 -
CodeForces 721C
问题描述:CodeForces 721C 思路:这是一个拓扑图,询问从1到n在T时间内最多能观光几个景点,并输出顺序,有边权。 这题是一个拓扑dp,考虑dp[i][j],到达i点时,观光了j个景点的最小时间 转移是这样对于一条边u -> v,dp[v][j] = min(dp[v][j],dp[u][j - 1] + dis[u][v]); 当时不会保存多个点的情况,用dp保存即可。 A原创 2017-07-16 23:48:13 · 493 阅读 · 0 评论 -
CDOJ-UESTC 857-Boiling Vegetables
题意:初始有N颗菜重量分别是w1,...,wn,问你最少切几刀,使得这些菜的最轻和最重的比例符合 思路:师兄做法,考虑到答案说了小于500次,那我们可以用一个优先队列把这些菜记录起来,然后每次选取最重的 菜开始和最轻的比较,如果符合比例就退出来,否则我们就把这个菜i切成++cut[i]份(初始为1),切的 时候是平分,因为切的不均,就会产生大的和小的,会影响结果。所以贪心切。 AC代码:原创 2017-07-16 23:53:02 · 379 阅读 · 0 评论