摘要: 模拟 很明显应该尽量选最大或最小的数。那么我们维护一个set,再维护一个mp,每次检查是否能选,如果选完这个数上面的东西不悬空就可以选,每次选完都要更新四周-2+2的方块,因为再远就影响不到了 #include<bits/stdc++.h> using namespace std; typedef 阅读全文
posted @ 2017-07-11 22:37 19992147 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 贪心 感觉思路很奥妙 首先我们把那些比两边小的数删掉,因为不删的话两边的数就会选这个数,这样就成了先上升后下降的序列,很明显除了第一第二大的数都能选,然后统计就好了。 #include<bits/stdc++.h> using namespace std; typedef long long ll; 阅读全文
posted @ 2017-07-11 22:34 19992147 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 贪心 这个贪心不太懂啊 dfs返回子树需要的最小值,然后按需要减消耗排序,然后贪心选取即可。 #include<bits/stdc++.h> using namespace std; typedef pair<int, int> PII; const int N = 110; struct Node 阅读全文
posted @ 2017-07-11 09:16 19992147 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 费用流 这种棋盘模型大概都是网络流吧 首先我们知道棋子之间不会影响到达目标的步数,那么就好做了,枚举终点,然后就是最小权匹配了,因为就是寻找总和最小,然后费用流就行了。 #include<bits/stdc++.h> using namespace std; const int N = 110, i 阅读全文
posted @ 2017-07-11 09:09 19992147 阅读(129) 评论(0) 推荐(0) 编辑