上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要: 注意添加到集合中的数是升序的,先将数据读入,再离散化。 sum[rt][i]表示此节点的区域位置对5取模为i的数的和,删除一个数则右边的数循环左移一位,添加一个数则右边数循环右移一位,相当于循环左移4位,线段树与树状数组结合,树状数组确定位置。 le[rt]表示左移的位数,区间更新懒惰标记 为什么我 阅读全文
posted @ 2016-08-24 14:07 vwirtveurit 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 树状数组,一个想法是当往p注水时,认为是其容量变小了,更新时二分枚举,注意一些优化。 阅读全文
posted @ 2016-08-13 22:27 vwirtveurit 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 判断图是否单连通,先用强连通分图处理,再拓扑排序,需注意: 符合要求的不一定是链拓扑排序列结果唯一,即在队列中的元素始终只有一个 阅读全文
posted @ 2016-08-10 10:20 vwirtveurit 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 正推,到达i的概率为p[i],要注意除了1和n外,到达i的概率并不一定为1 概率表达式为p[i] += p[j] / min(n - j, 6) 从j带过来的期望为exp[i] += exp[j] / min(n - j, 6) 又到达i时有价值val[i],到达i的概率为p[i],故exp[i] 阅读全文
posted @ 2016-08-09 21:03 vwirtveurit 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 渐渐认识到区域赛更侧重的是思维及基本算法的灵活运用,而不是算法的量(仅个人见解),接下来要更多侧重思维训练了。 区间DP,dp[i][j]表示从i到j最终剩余第i 与第j只的最小伤害值,设置0与n+1两个虚拟的狼,状态转移方程如下: dp[i][j] = min(dp[i][j], dp[i][k] 阅读全文
posted @ 2016-08-07 18:22 vwirtveurit 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 先记录以1为根时每个节点子树儿子节点的最大与次小值,询问x, y时,先判断x在不在y的子树范围内,若不在,结果为y的儿子结点,后继的最小值。 若x在y的子树范围内,若y儿子最小值是x的前驱,从次小值与父亲节点转移,否则从最小值与父亲节点转移。 阅读全文
posted @ 2016-08-06 22:50 vwirtveurit 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 二分思想,对所要花费的时间进行二分,再以模拟的形式进行验证是否可行。 使用二分法,可以将一个求最优解的问题转化为一个判定问题,优雅的暴力。 阅读全文
posted @ 2016-08-05 19:45 vwirtveurit 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 买酒 Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MBTotal Submission: 70 Submission Accepted: 22 Description 众所周知,西瓜是一个很爱喝酒的人。有一天西瓜和朋友去 阅读全文
posted @ 2016-08-05 16:12 vwirtveurit 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 状压DP: 先不考虑数量k, dp[i]表示状态为i的概率,状态转移方程为dp[i | (1 << j)] += dp[i],最后考虑k, 状态表示中1的数量为k的表示可行解。 阅读全文
posted @ 2016-08-05 11:33 vwirtveurit 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 树状数组,与Turing Tree类似。 xr[i]表示从1到i的抑或,树状数组维护从1到i每个数只考虑一次的异或,结果为sum(r) ^ sum(l) ^ xr[r] ^ xr[l] 其中xr[r] ^ xr[l] 相当于l + 1到r出现奇数次的数的异或,sum(r) ^ sum(l)表示l + 阅读全文
posted @ 2016-08-05 10:13 vwirtveurit 阅读(311) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 下一页