一些POI的简单题解
2015-07-14 12:01
323 查看
WJMZBMR说过:“连POI都不会还搞个屁OI”,早就听说过POI,然而一直没有勇气去刷。几个月前才发现,POI的题目几乎都是趣味性很强的思维题。初学者如果要锻炼思维的话可以去刷一刷。由于NOI吧里都可以找到资源,所以我在这里就简要讲一下我做了的题目里面比较经典的思路和细节(不要怪博主懒,明天就去NOI了,怎么也赶不赢啊。。。。。)(题目序号都是bzoj上的)
由于x是并查集中最高的点,因此并查集中任意一个点放置水泵都会导致点x被抽干
故如果x所在并查集中已经放置过水泵,则无需在x点放置水泵
否则就要在x点放置一个水泵
那么我们需要一种数据结构,支持插入删除,以及logn查询区间k大
平衡树可以实现,并且在获得中位数x时得出大/小等于x的数的个数以及和,就可以获得这个区间的最优值
也就是平衡树不仅要维护子树的大小,还要维护权值和
1097: [POI2007]旅游景点atr
K那么小,一看就是先跑最短路再上压状dp啊。。。。1099: [POI2007]树Drz
根据最值分情况讨论,线段树300+的码简直无法直视1100: [POI2007]对称轴osi
先处理出相邻点的变换方式,再用kmp记录一下相同的变化方式,然后直接判断1101: [POI2007]Zap
莫比乌斯经典题目,枚举gcd然后分块处理。1102: [POI2007]山峰和山谷Grz
直接bfs。。。。。。。1103: [POI2007]大都市meg
由于是树形,所以直接用dfs序+树状数组进行区间加就行了。1104: [POI2007]洪水pow
对于每个关键点x,我们将所有高度小于等于x点的点都加入并查集并将相邻的合并由于x是并查集中最高的点,因此并查集中任意一个点放置水泵都会导致点x被抽干
故如果x所在并查集中已经放置过水泵,则无需在x点放置水泵
否则就要在x点放置一个水泵
1105: [POI2007]石头花园SKA
神贪心,由于我们可以确定x的范围和y的范围。我们可以枚举左下角的坐标和右上角的坐标,然后直接O(n)判定1106: [POI2007]立方体大作战tet
不难想到,两个方块间有多少个独立的方块,就至少要换多少次,然后直接用线段树记录区间和,一个点第一次出现,该位置+1,第二次出现-11108: [POI2007]天然气管道Gaz
将行和列分开考虑,然后发现就是两项相减。,因为方向确定,所以每个点肯定是往当前离自己最远的可行点靠近,不然后面的点就会有重复的移动。1109: [POI2007]堆积木Klo
dp,可以预处理出每个积木应该所在的位置然后 记算如果这个点在自己应该在的位置上,最多有多少个积木在积极该在的位置上,然后发现这是个最长上升子序列,然后用二分优化。1112: [POI2008]砖块Klo
首先如果确定了一个区间,我们只需要求出区间中位数,可以枚举区间并在logn的时间内获得中位数那么我们需要一种数据结构,支持插入删除,以及logn查询区间k大
平衡树可以实现,并且在获得中位数x时得出大/小等于x的数的个数以及和,就可以获得这个区间的最优值
也就是平衡树不仅要维护子树的大小,还要维护权值和
1113: [Poi2008]海报PLA
一看不就是最大子矩阵一样维护一个单调栈,然后答案就是栈里相邻两项的差。1114: [POI2008]鲁滨逊逃生Rob
bfs+线段树???,年代久远,而且代码上200+,已经不记得具体做法了。。。。。。1115: [POI2009]石子游戏Kam
打表找规律,发现是相邻两项的差的异或的值与第一项的异或和。1116: [POI2008]CLO
发现就是并查集1117: [POI2009]救火站Gas
经典树上贪心,记录当前节点的根里距离当前节点为[1~k]的有多少个,然后每次当前节点必须放距离为k/控制数个救火站,然后再更新其他节点的状态(注意要先放远的)。1119: [POI2009]SLO
同奶牛的排序,直视改了价值而已1121: [POI2008]激光发射器SZK
由于光路的可逆性所以就是点数/21123: [POI2008]BLO
tarjan 对割点进行一次dp1124: [POI2008]枪战Maf
这个题竟然是拓扑排序+贪心。。。。由于最外层的肯定不会死,所以从他们开始开枪,然后就要蛋疼的写个更新子节点的子节点的拓扑排序了。。。。1125: [POI2008]Poc
splay+hash1126: [POI2008]Uci
直接dp上。。。。代码实现起来有点烦1127: [POI2008]KUP
最大连续子区间,把所有小于k的找出来,如果有k~2k的直接输出,把>2k的看做障碍,由于都是由<K的数组成,当最大子区间和大于2k的时候就肯定有子区间满足条件。然后在在当前矩阵里面找。1130: [POI2008]POD Subdivision of Kingdom
直接搜索,注意常数。1131: [POI2008]Sta
喜闻乐见树形dp1132: [POI2008]Tro
把式子列出来发现每个三角形对答案的贡献我们可以记一个前缀和,然后就省去了一个n1135: [POI2009]Lyz
经典hall定理+线段树1142: [POI2009]Tab
由于可以任意交换行和列,虽然每一行的元素依然不变,但顺序就可以任意改变了,所以我们把每一行的元素排个序,然后再把每一列按顺序排好,再比较就可以了。相关文章推荐
- 【LeetCode从零单排】No22.Generate Parentheses
- iOS开发网络篇—GET请求和POST请求
- Extjs学习笔记——Ext.data.JsonStore使用说明
- 简析程序启动原理
- 妙趣读书笔记
- python语言优点&缺点
- C++ 返回值为引用
- datagridview查询
- 代码重构的技巧——合理使用@Deprecated
- Linux中解决SSH连接慢问题
- 来北京学习Android的第一天
- listview的过滤
- python 编码问题
- GRE写作必备句型
- dump之10046
- Android 自定义控件
- JAVA之BigInteger
- PHP底层的运行机制与原理
- listview的滑动删除
- struts2 数据校验validation.xml 常见错误