07 2013 档案

摘要:题意: 给出一个数组,问你对于第i个数,从最后一个比它大的数到它之间比它小的数中最大的那个数的下标,以及它右边到第一个比它大的数中比它小的数中最大的那一个数的下标。 eg:5 2 4 3 1 l 0 0 2 0 0 对5来说左边比它小的数没有,所以是0。对2来说左边比它小的数没有,所以是0。对4来说左边比它小的数是2,所以下标是2。 r 3 0 4 5 0 对5来说右边比它小的数中最大的是4,是第3个,所以答案是3。对2来说右边比它小的数是1,但是4比2大,所以无法到达1,所以答案是0。对于4,右边比它小的数中最大一个3的下标是4,所以答案是4。思路: 单调队列... 阅读全文
posted @ 2013-07-26 14:58 Griselda. 阅读(674) 评论(0) 推荐(0) 编辑
摘要:题意: 一个炮兵可以攻打和他之间曼哈顿距离为2的士兵,给出你一块n*m的战场,告诉你哪些地方可以站人哪些地方不可以,问你最多可以安放多少个士兵? n 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 int n, m; 9 int G[110], bir[1>2)&i) || ((i>1)&bir[j][0])) continue;48 dp[0][j][i] = bir[i][1]+bir[j][1];49 ans = max(ans, ... 阅读全文
posted @ 2013-07-19 17:43 Griselda. 阅读(242) 评论(0) 推荐(0) 编辑
摘要:题意: 给出4*4的棋盘,只有黑棋和白棋,问你最少几步可以使棋子的颜色一样。 游戏规则是:如果翻动一个棋子,则该棋子上下左右的棋子也会翻一面,棋子正反面颜色相反。思路: 都是暴搜枚举。 第一种方法:暴力dfs枚举 棋子只有最多翻一次,因为翻两次后结果和不翻是一样的,所以整个棋盘最多翻16次。 用step代表翻转的次数,当翻转了step次时,就看一下整个棋盘是否是清一色的。 当棋盘是清一色的时候就直接输出step,得到的就是最少翻转次数使棋盘清一色。 第二种方法:利用位运算来优化 因为棋子不是白就是黑,所以可以用0和1来表示。 然后为每一个棋子... 阅读全文
posted @ 2013-07-16 10:57 Griselda. 阅读(1000) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示