4小时有队伍全切 前一小时第一名出4题 G题、H题AC最少 A题会有很多WA 1个队伍10题,2个队伍9题 校内队伍第一、二名7题 (3.5小时) (3题,God Kylin 62m出第四题) (?) (?) (2个队伍10题) (只有一个7题) 各题统计 88 / 49 / 54 Toxophily 138 / 45 / 17 Run 47 / 185 / 4 Ring 13 / 203 / 3 Radar 28 / 44 / 13 Pendant 182 / 35 / 66 Name PK 45 / 180 / 26 Minimum Heap 53 / 60 / 31 Five in a Row 69 / 40 / 11 Find The Path 335 / 10 / 51 Cup 网络同步赛 有很多Final队伍参赛 复旦大学 HyperHexagon 四川大学 WinWill 浙江大学 Zodic 天津大学 HanoiTower 华东理工 Kernel 南京大学 Tuners 北京交通大学 Imba 同步赛统计 131 / 75 Toxophily 66 / 9 Run 24 / 6 Ring 50 / 3 Radar 25 / 11 Pendant 403 / 105 Name PK 99 / 39 Minimum Heap 89 / 34 Five in a Row 84 / 16 Find The Path 978 / 98 Cup 一个最基本的结论:各个AI可以增长的经验值均为正值,因此最优策略必定是趁其他AI还未变强之前让1号与所有人打一轮 可以用一个N – 1位的二进制数记录2-N号AI是否与1号AI进行过PK. 能得到的积分范围为[0, 10 * 12],很小。而能得到的经验值范围为[0, 1000 * 12]. 因此不妨将积分作为DP状态。 Five in a Row, Again Five in a Row, Again F[p][x]表示“赛况”为p,1号AI获得x积分时所能得到的最大经验值。 找寻所有还未进行过PK的AI,记为i,那么 F[p][x] = max{F[p + 2 ^ i][x + (F[p][x] E[i]) × W[i]] + E[i]} 其中E[i]表示i号AI的经验值,W[i]表示打赢i后1号AI所能获得的积分 所有有效状态中最大的x即为答案 Ring 根据给定的字典建立一棵Trie树 为了实现多串模式匹配,在原Trie树基础上加入类似于KMP算法Next函数的Fail边 Aho-Corasick Automaton Ring F[i][j]表示当前构建的Romantic String的前i位所对应自动机上的状态j时能得到的最大积分 记W[]为各个单词的分值,Contain[i]为自动机状态i上所包含的单词,那么 F[i][j] = max{F[i - 1][k] + W[Contain[j][t]]} 其中状态k存在一条通往状态j的边(正向边或Fail边) 因为长度要尽量小,因此Romantic String中不能包含“废字母”. Pendant 很容易想到DP的做法 F[i][j]表示长度为i的pendant,用了j种珍珠,所构成的方案数 F[i][j]=F[i-1][j]*j+F[i-1][j-1]*(k-j+1) 我们要计算F[1][k]+…+F[n][k] N=1,000,000,000 普通的DP无法解决 Pendant 这类问题可以用矩阵乘法解决 F[i-1]到F[i]的转移可以用矩阵来描述,相当于一个k*k的线性变换矩阵 因此F[i]=A*F[i-1],这里A是转移矩阵 因此F[i]=Ai-1*F[1] F[1]+…+F[n]=A0*F[1]+…+An-1*F[1] =(I+A+A2+…+An-1)*F[1] Pendant I+A+A2+…+An-1的计算可以用二分或者构造矩阵,时间复杂度为O(k3logn) 这里是简单的二分法说明 I+A+A2+…+A2p+1 =(I+A2+A4+…+A2p)+(A+A3+…A2p+1) =(I+A2+A4+…+A2p)(I+A)问题规模减半 偶数的情况也可以类似的解决 Minimum heap 这个问题很明显有递归性质 F[n]=F[left]*F[right]*C(n-1,left) left为左子树的结点数,right为右子树的结点数 显然right=n-1-left left很容易通过完全二叉树的定义计算 剩下的事情就是AC它! Toxophily XY轴速度分量Vx = V * sin(theta), Vy = V * cos(theta). 设S

文档评论(0)

1亿VIP精品文档

相关文档