摘要: 这道题做了快两天了。首先就是按照这些竖直线段的横坐标进行从左到右排序。将线段的端点投影到y轴上,线段树所维护的信息就是y轴区间内被哪条线段所覆盖。对于一条线段来说,先查询和它能相连的所有线段,并加入到一个有向图里面,一遍后面O(n3)暴力统计答案。然后就是update,用这个线段将对应的区间“染色”... 阅读全文
posted @ 2015-04-29 20:59 AOQNRMGYXLMV 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 紫书上分析了很多很多,超详细,= ̄ω ̄=每扫描一行可以计算一个height数组,表示从这块空地向上延伸多少块空地,而且这个数组可以逐行递推。首先对于每一行来说维护一个单调栈,栈里放的是矩形的左上角,而且横坐标c和高度h也都是递增的,另外对于扫描到的同一个右下角,矩形面积的大小只与左上角的横坐标c和高... 阅读全文
posted @ 2015-04-29 14:59 AOQNRMGYXLMV 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 详细的题解见这里。图片转自上面的博客假设我们已经推导出来x在处取得最小值,并且注意到这个点是位于两个整点之间的,所以从这两个整数往左右两边枚举b就能找到b+c的最小值。其实只用往一边枚举就够了,由于对称性,我们不妨假设b ≤ c,那么只要让b从2a开始递减枚举即可。1 #include 2 usin... 阅读全文
posted @ 2015-04-29 12:20 AOQNRMGYXLMV 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 居然没有往错排公式那去想,真是太弱了。先在前m个数中挑出k个位置不变的数,有C(m, k)种方案,然后枚举后面n-m个位置不变的数的个数i,剩下的n-k-i个数就是错排了。所以这里要递推一个组合数和错排数。顺便再复习一下错排递推公式,Dn = (n-1)(Dn-1 + Dn-2),D0 = 1,D1... 阅读全文
posted @ 2015-04-29 07:47 AOQNRMGYXLMV 阅读(324) 评论(0) 推荐(0) 编辑