摘要:
HDU_3660 首先如果下一步到达某个节点后,无论怎么走都不能使路径和在L、R之内的话,那么是肯定不能走这一步的。至于如何找到这些不能走的节点,可以从叶子节点开始,如果这条路径和不在L、R之内,那么就将这个叶子标记为-1,表示不能来这个节点,对于其他的节点,如果它的所有孩子都被标记成了-1,那么它本身也应被标记-1。 这样我们只要沿不是-1的点走就可以了,接下来如何计算最大的可能值呢?对于Bob来讲,显然应该在所有的路中挑“最终可能得到的值最大”的那条路去走,而Alice就应该选择“最终可能得到的值最小”的那条路去走,那怎么才能知道最终可能的值是多少呢?只要从叶子节点开始向上依次计算就可以了 阅读全文
摘要:
HDU_1809 这个题目可以用SG函数求解。 由于对于任意一个棋盘来讲,如果将棋盘的状态看成一个节点,那么这个游戏就相当于是在一个有向无环图上行走。 而各个棋盘间是独立的,因此可以将每个棋盘的SG值先求出来,然后异或起来就得到了游戏整体的SG值。#include<stdio.h>#include<string.h>#define HASH 10007#define MAXD 10010#define MAXN 55typedef long long LL;int S, N, M, sg[MAXD], g[MAXN][MAXN];struct HashMap{ int 阅读全文
摘要:
HDU_2259 做这个题目首先要做Continuous Same Game(1),要不然不好测试对矩阵的操作是否是对的。 这个题目一开始怎么写怎么超时,如果改成用优先级队列的话就会爆空间,今天早晨才突然发现原来是对下面的这句话理解错了。 Then I will calculate the average of (Ai/Bi), 1<=i<=100. You will get WA if your ouput is invalid or this average is less than 1.5. 题目的意思是算100组case的Ai/Bi的平均值,并要求其不小于1.5,而我一开始 阅读全文