[原博客] POI系列(2)

时间:2024-09-30 15:33:44

正规、严谨、精妙。 -POI

  bzoj 1098 : [POI2007]办公楼biu

  如果把互相有手机号的建边得到一个无向图,那么这个图的补图的连通分量个数就是答案了。因为互相没手机号的必然在同一个连通分量里。但是注意到N(2<=N<=100000)M(1<=M<=2000000) 补图是个非常稠密的图,如果直接做的话会tle或mle。可以用一个链表来优化bfs。链表初始有N个点,bfs每次开一个now[n]数组标记该点是否邻接,然后对于链表中的每个元素若不邻接,就可以加到队列里扩展,同时在链表中删去。这样就是O(n+m)的了。

  bzoj 1106 : [POI2007]立方体大作战tet

  这个有点贪心的意思,想了半天,首先如果两个数之间还有n个数,那么肯定需要至少n次交换,于是可以用一个树状数组维护,第一次遇到一个数记录位置,然后+1,第二次遇到一个数,答案加上消去这个数所要的交换次数即该位置到第一次出现之间的和,然后-1,扫一遍就ok了。

  bzoj 1116 : [POI2008]CLO

  可以证明,如果一个连通分量内有>=3个点并且边数>=点数,那么就可以构造一个解。证明链接

  bzoj 1115 : [POI2009]石子游戏Kam

  首先差分,然后经过几步转化变成只考虑偶数位上的Nim和就行了。参考详细讲解链接。(其实挺难的。)

  bzoj 1102 : [POI2007]山峰和山谷Grz

  这个模拟就行了,按照题目要求扫几遍即可。我用了并查集。


以上。