摘要: 500ms时限406ms水过……直接枚举肯定超时,需要剪枝。枚举每个格子的元素,检查其左上角和正上方格子是否满足条件,若不满足不必再向下搜索。在 这里看到一个更好的方法:枚举每个格子是哪个相邻的比它大。然后DFS看看有没有环。这样的复杂度只有(2^5*3^5)。不过我没写出来……而且也不太清楚这个时间复杂度是怎么算的……求指点! 1 #include 2 #include 3 #include 4 5 const int dx[] = { -1, 1, 0, 0 }; 6 const int dy[] = { 0, 0, -1, 1 }; 7 8 int N; 9 ... 阅读全文
posted @ 2013-07-25 20:42 冰鸮 阅读(369) 评论(0) 推荐(0)
摘要: 线段树节点记录内容请见代码注释操作1:每次查询区间 [A, N - 1] 中第一个空格的位置,然后在[ A, N - 1 ]中二分右端点的位置。实际放的花的数量是 要求数量 与 剩余空格数量 之间的最小值。如果[ A, N - 1 ]中已经没有空格了,就不能放了。操作2:求和与成端更新,线段树基本操作不解释比赛的时候把PushDown函数写错了,样例死活不过,比赛结束之后才看出来,2A之,orz……要不要这么伤人…… 1 #include 2 #include 3 #include 4 #include 5 6 #define lson l, m, rt > 1; 33 ... 阅读全文
posted @ 2013-07-25 17:24 冰鸮 阅读(399) 评论(0) 推荐(0)