摘要: 按照题意模拟即可。 阅读全文
posted @ 2017-10-25 10:07 或是七一 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 一看就想到BFS。 由于状态只有2^16个,所以直接状压。 建议用宏定义优化代码。 阅读全文
posted @ 2017-10-25 08:27 或是七一 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 匈牙利算法。 主要要加时间戳优化。否则很容易TLE。 阅读全文
posted @ 2017-10-24 20:43 或是七一 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 一看就知道是DP了。 注意要求字典序最小,所以要从后往前做最长下降子序列。 如果不加二分或者树状数组之类的优化应该会TLE的吧。 输出的时候找一下答案即可。 阅读全文
posted @ 2017-10-24 19:41 或是七一 阅读(86) 评论(0) 推荐(0) 编辑
摘要: treap的裸题,查找最近的数其实和插入的方法是一样的,可以写在一起,然而影响不大也就懒得写了。 treap的思想就是把二叉搜索树改为随机顺序插入,这样就不会被数据卡成一条链了。 主要由一个旋转操作来维护。这个操作网上有很多,就不多说了。 一个节点有两个量:key,value。 value表示这个节 阅读全文
posted @ 2017-10-24 14:37 或是七一 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 设b数组表示这个位置有没有雷。 a[i]=b[i-1]+b[i]+b[i+1]。 b[3]=a[2]-b[2]-b[1]。 b[2]=a[1]-b[1]。 也就是说,只要知道b[1]就可以知道b[2]...b[n]的值。 于是直接枚举b[1]的值把b数组一个个推出来判断是否符合即可。 阅读全文
posted @ 2017-10-24 10:55 或是七一 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 最大匹配,但算时间复杂度是过不去的。 并查集加贪心。 贪心,两个数所在集合的根都没选我们就选小的。 如果有一个选了,那么就选另一个。 如果两个数在同一集合,那么说明出现了环,所在集合所有数都可以选了,于是把根赋值为可选。 注意根是所在集合中的最大值。 阅读全文
posted @ 2017-10-24 10:36 或是七一 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 枚举右下角,问题转化成求以(x,y)为右下角的n*n正方形中的极值。 我们可以先把这个n*n正方形拆成n行n列。 用单调队列可以很快求出每一个位置往左n个的极值。 然后存储下来再用单调队列再求一次,合起来就是一个n*n正方形。 感觉很难说清楚,可以配合代码理解。 阅读全文
posted @ 2017-10-23 19:32 或是七一 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 类似田忌赛马问题。 设浙江队的实力值为a数组,对手的实力值为b数组。 先把两数组从小到大排序。 如果a中最小的一个比b中最小的一个大,那就让他们两个打。 如果a中最大的一个比b中最大的一个大,那就让他们两个打。 如果二者都不是就让a中最小的一个和b中最大的一个打,注意判断两者有可能是相等的。 第二问 阅读全文
posted @ 2017-10-23 18:08 或是七一 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 由于m只会是1或者2,那么就干脆分类讨论,可以开两个namespace实现。 当m为1时。 设dp[i][j]表示前i个数中选了j个矩阵的最大值。 dp[i][j]=max(dp[i-1][j],dp[k][j-1]+sum[i]-sum[k])(0<=k<i)。 当m为2时。 设dp[i][j][ 阅读全文
posted @ 2017-10-23 17:46 或是七一 阅读(100) 评论(0) 推荐(0) 编辑