好久没写了。到目前为止也算是刷完了hnoi07-12的题,精简题解第三弹(大多数代码好像都没存就不贴了)
2007:07年的题目略奇葩,刚开始做就被虐爆了啊>_<
海盗分宝
题意不明觉厉。。。
最小矩形覆盖
裸的凸包+旋转卡壳。第一道正经的计算几何。另外这题精度巨卡,建议对着数据调。有关旋转卡壳当时做过ppt,这就不写了。
代码:
又不明觉厉了囧。。
神奇游乐园
裸的插头DP。话说当时还没有陈丹琦的论文呢
分裂游戏
这是一个叫什么什么博弈的东西,反正是经典博弈。
思路很巧妙,把每个石子看成是一个独立游戏就可以SG了。
紧急疏散
好题。一看就是网络流构图,但重点是流量上限应该是动态增加的。处理方法和正常的网络流一样。
梦幻岛的宝石
背包DP,对二进制位进行DP。jwc写了一个神奇的分层DP。。我的DP还是弱啊。
所罗门的咒语
不明觉厉第三弹。。Orzclj
2008:08年的题比07强,但是有很多以前没学过的东西
可见直线
继续裸的计算几何。半平面交,注意边界直线一定要取的非常远。
明明的烦恼
prufer编码。这个还没太理解。
越狱
捉鸡的组合计数。不说了
神奇的国度
弦图的贪心染色。可以看cdq的论文,或者组合数学上也有讲
GT考试
kmp+矩阵
洗牌
Burnside引理+DP。又跪在DP上了
玩具装箱
以前写过详细的斜率优化。现在感觉用动态凸包的思想比较好理解。好像是数据水了,乱搞也能过
遥远行星
利用精度乱搞?给神题跪了
2009:09年的题还可以吧
梦幻布丁
通往城堡之路
科♂学的调整。利用贪心思想确定初始解后进行调整
有趣的数列
打个表发现是Catalan数。
最小圈
二分答案改边权a[i]-b[i]*ans,判负环即可
2010:这周去ACM了,所以题是选着做的。(然后ACM被虐爆了T_T)
合唱队
这就是DP啦
平面图判定
环内和环外对应二分图的两侧,匹配或者2-SAT
物品调度
知道了序列就是是贪心,关键在于求序列。看了题解,用双端链表维护,按GCD分类讨论。
公交线路
压缩状态。没做
取石子游戏
贪心。当时没做
城市建设
动态最小生成树,离线搞。论文题
弹飞绵羊
动态树或者LCT,都太麻烦。。
直接分块,块状数组O(n*sqrt(n))
矩阵
搜索优化?也没做
2011:难度上升,但还是可做的
数学作业
矩阵加速递推。直接用矩阵表示不了,按位分别搞
勾股定理
不明觉厉*4。。看看了看题解觉得好神啊。。。
赛车游戏
贪心。利用柯西不等式可证明
括号修复
splay维护序列,和05年noi那道题一样。暴力30分,感觉可以分块?
任务调度
太神了!模拟退火!RP-完全问题!
XOR路径和
计算对于期望的贡献,然后解方程
数矩形
简单几何
卡农
其实一点也不难,就是想出来也不确定对不对。囧。
2012:最后一年,感觉是做的最好的。
双十字
染色然后记录前缀和,组合计数
与非
按位DP。不太会
排队
简单的排列组合。捆绑,插空,容斥什么的。需要高精度,不想写了然后突然发现BZOJ上可以交python。于是你懂得。
1#!/usr/bin/python2#Filename:queue.py3n,m=raw_input().split()4n=int(n)5m=int(m)6deffac(a):7ifa==0:8return19ans=110foriinrange(1,a+1):11ans=ans*i12returnans1314defA(a,b):15returnfac(a)/fac(a-b)1617ifn==0:18print019elifm>n+3:20print021else:22printA(n,n)*(A(n+1,2)*A(n+3,m)+A(2,2)*A(n+1,1)*A(n+3-1,m-1)*m)23exit(0)ViewCode矿场搭建
容易发现跟割点有关。于是有两种方法:
删去所有割点后剩下了若干个块,那么答案就是只与一个割点相连的块数,特殊情况若没有割点答案是2(注意不是1),复杂度O(m)
另一种做法是直接枚举删去的点然后连通分量缩环,取最多的块数即可,复杂度O(n2)
显然这题数据水了,两种方法都能过
三角形覆盖问题
simpson可以搞,据说只有50分?
注意到坐标范围不大,那么可以利用梯形剖分的思想暴力扫描线。每次扫描线+1(注意不用离散,离散了就麻烦了),然后用双端链表维护三角形,开一个数组暴力维护覆盖线段个数。
射箭
首先设方程,因为过原点所以只有两个未知参数a和b。二份答案后列出2*ans个不等式,就变成了裸的半平面交。
我一开始想差分约束了,显然不对。注意差分约束的不等式里没有系数,必须是x1-x2这样的。有系数的只能半平面交
永无乡
显然的启发式合并平衡树
集合选数
做法很神。构造出一个矩阵后就可以状压DP了。网上有很多讲的清楚的题解。