关于bzoj

P1000:水一把

P1006:弦图完美消除序列,我用的MCS,在写此题前请先去看cdq有关弦图的ppt,因为,b的错,WA了会儿,真是忧伤……

P1007
照斜率排序 然后用stack维护可见直线序列 插入的直线与top的焦点必须始终大于top与top-1的焦点 否则top--
①struct sort cmp
bool cmp(const struct line &x,const struct line &y)
{
return(x.a<y.a||(x.a==y.a&&x.b<y.b));
}

P1008:简单数学算一算 NOIP第一题难度 要用快速幂

P1015:
总体来说,倒着搞。先把所有不被攻打的点相关边连上,数一下几个联通块。然后对于攻打列表,从第d个点开始向里面加边,维护有几个联通块,这里用到并查集。
数组要比vector快得多,尽量不用vector。这一题200000特别明显,用vector四个点左右,数组的话AC
②类似链表的数组存储结构。大大减少空间复杂度,详见程序。
数组大小。Cena上崩了几次,把大小扩成两倍才AC了。但是依旧无法理解为什么并查集fa[]和访问标记v[]开到200000+1不行。只能说,在空间复杂度允许的情况下,除了读入的数组,其他都开大一些,避免RE。另:各神犇,求指导~~~~

P1031:裸后缀数组 把2*原串拿来搞 然后就没了……

P1061:加一个点(n+1),与其他点相连,上Kruskal

P1191:最大匹配,直接上匈牙利算法,最差时间复杂度O(mn^2),但对付此题足够

P1202:并查集 用g数组表示该点到其父亲的总收入 当s与t在同一集合是进行收入合法判断 否则合并 更新总收入P党小心不要直接输出变量boolean 因为默认是大写 而题目要求小写

P1067:ST+二分 算法难度不大 细节较多 不过很奇怪BZOJ Runtime_Error wikioi、Windows cena都过了……奇葩、、

P1084:动态规划 m<=2 对于一维的话很水 对于二维的话 f[i][a][b]表示分成i个矩阵,(我把矩阵旋转了一下)第一行前a个,第二行前b个最大值 然后考虑全在第一行或第二行取,当a==b,考虑两行的矩阵。

P1088:枚举 确定了前面两个格子 所有的状态都可以推出来 然后判定 很明显 答案最大只有2

P1588:可以用stl set类的随意模拟一下,不过很奇怪的在IN0 IN8 WA了,和正解都只差1,而且都是比正解小1……ToT 如果出现前述情况请判断

scanf("%d",&x)==EOF?  

这是从lydrainbowcat的代码里面发现的  Au爷 Orz 

当然或者是Splay Tree 而且似乎比C++自带的红黑树略快的样子

P2002:虽说是Splay 却可以用分块做 原来将分析来的两种极端的做法平摊以后也能得到AC算法……好像很高端的样子 受教了 还有就是:即便加了ios::sync_with_stdio(false)的优化cin,cout还是不能和scanf,printf匹敌 特别是在这题用分块来写的题里面差别很明显。

P2809:APIO2012派遣 左偏树学习的第一题……不过我是什么时候写的这道题,今天看打包代码的时候才想起来 我竟然A过这道题 囧

 

Codehttp://pan.baidu.com/s/17VJHN

posted @ 2013-11-15 22:29  lcj2018  阅读(451)  评论(0编辑  收藏  举报