![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
小狐狸jun
菜鸟飞呀飞~
展开
-
hdu 1443 Joseph+暴力打表
题目大意:k个好人,k个坏人,确定n,利用Joseph方法删除所有坏人. 由于数据规模,可以利用暴力打表,以后能打表就尽量打表。 这题原本模拟数据时间完全够的,但是测试数据有很多重复的,导致很多人超时,暗坑!!!! 以后要注意点这种情况。 打表: #include int main(){ int n,a[14]={0,2,7,5,30,169,441,1872,7632,174原创 2012-12-03 16:33:24 · 681 阅读 · 0 评论 -
hdu1754线段树入门
题意:给出N个数,然后M个操作,操作又Q和U2种,Q A B 代表 询问A-B之间的最大值,U A B 代表把A的值更新为B 分析:简单的线段树,属于模板题 线段树,一种二叉搜索树,每个节点代表一段区间。在该结构上的操作在log级别。 结构什么的还是自己看代码吧,有个整体概念后,根据题来看懂代码这种能力还是很必要。 今天刚接触的树,还是参照别人的代码ac的。感觉线段树用处会更多,需要在原创 2013-04-08 21:06:13 · 853 阅读 · 0 评论 -
hdu4417(树状数组)(线段树)(划分树+二分)
这题主要用来练习一下划分树和线段树; 线段树也可以做,但是划分树+二分思路更清晰。 划分树用来求logn时间的区间中第k大值,其中如果有相同大的值也不会覆盖,如区间内有2个5,则一个5为第n大,另一个5为第n+1大; 还是3种方法代码都敲出来吧,其中线段树和树状数组的思路是相同的,就是先对查询和原数组进行排序,然后利用树状数组和线段树通过判断赋值后快速求区间内的值。 这里线段树最后开大小时原创 2013-05-24 21:33:12 · 868 阅读 · 0 评论 -
poj3264 线段树水题
之前青岛市的一个比赛有题线段树,结果自己实在太二,用线段树去敲没想到自己哪儿错了。。。 结果今天回来一做一道求最值的水题就发现自己的错误了。。。。导致那场比赛呗虐啊。。。。 #include #include using namespace std; const int inf =1<<30; struct segtree { int l; int r;原创 2013-05-28 19:56:13 · 1119 阅读 · 0 评论 -
hdu3415 单调队列
单调队列,最近状态不好啊。。省赛了,要加油。。 单调队列,这题先将数组转换为前N项和的形式,然后遍历一遍,求a[k-i]即k到i的最大值,其中,控制i的范围。。。 然后单调队列从一开始判断,保持队头为最小值,然后加上判断语句,若i-s【top】>k 队头退队即可。 代码: #include #include #include using namespace std; int a[2原创 2013-05-29 21:28:44 · 465 阅读 · 0 评论 -
hdu2430 单调队列
这题用单调队列需要分析好,当然也是自己思维不灵活,老想套用其他题的方法。 题意: 求出字串和,使其满足sum%p 单调队列,自己理解主要在于每次更新操作覆盖掉无用的部分,即根据单调关系那部分在以后的判断都是无用的那一部分,从而使效率提高,而不要盲目的去退队从而将有用的部分去掉使答案错误。 这题单调队列pos最小为队头,保证了pos最小即得出的sum[k]-sum[s[top]]最大,然后便原创 2013-06-05 21:55:55 · 716 阅读 · 0 评论 -
hdu 1542线段树(成段更新+离散化)
第一次做线段成段更新的题,这题需要离散化。 题意:给出几个矩形,求其覆盖面积。 思路:先离散化x坐标,然后加入矩形的上下边,对矩形上下边根据高度进行排序后。建树,从最高的边开始更新线段树,然后就是通过给每条边赋值上边-1下边1,通过节点中 iosum来判断每次线段树中的有效边,每次ans+=有效边*下一层边的高度,最后得出答案。 代码: #include #include #incl原创 2013-06-06 21:42:04 · 580 阅读 · 0 评论