- 博客(11)
- 收藏
- 关注
原创 线段树2种递归方法比较
本人也是刚学线段树,所以之前写了一道入门题目,发现自己老是超时。逐百思不得其解。后参考网上的代码发现基本有两种递归方法来访问目标区间: 1.目标区间不改(本人第一次学习时根据定义写的) 这种基本代码(a,b为目标区间) if(a updata(lson,a,b,k,mod,c); if(b>mid) updata(rson,a,b,k,mod,c);
2018-07-24 22:20:19 281
原创 HDU Reorder the Books
Reorder the BooksBy davidlee1999WTK把这题的模型简化一下,有一个1\rightarrow n1→n的排列形成的数列,我们要用最少的操作次数把这个数列排序,每次操作都是把一个数放到整个数列的最前面。 首先我们可以注意到每个数最多只会被操作一次。因为假如有一个数被往前拿了两次,显然第一次的操作是没有意义的。 然后能发现一定先操作大的数,再操作小的数。因为假如先...
2018-07-24 22:19:36 153
原创 POJ 1182 食物链(带权并查集)
POJ 1182 食物链(带权并查集) 前几天在叶某同学的忽悠下,做了这道挺有意思的题目,感觉这道有必要做下记录。刚开始想到大概是绕一个圈子来证明之前的关系是否与当前语句给出关系矛盾,若矛盾,则是假话(就是后来看别人博客的向量的方法,但是我只是有感觉,具体写不出,所以参考了下这位大神的博客:http://hi.baidu.com/tomspirit/item/d1f2a19b2aaf36d27...
2018-07-08 17:47:55 383
原创 HDU 1506 简单DP
DP 找出 a[i] 的左边和右边与自己连着的比自己大的数的长度 , 然后用这个长度乘以 a[i], 乘积最大的那个就是答案#include<iostream>#include<algorithm>using namespace std;long long int h[100005];long long int l[100005];long long int r[100005];int
2016-01-19 22:27:52 298
原创 hiho 1242 MX Loves Game
这题有个特殊的地方,就是每一行数字只有1~N,所以这表示行交换不会影响列交换,于是我们可以采取个策略,先拿一行变成一样的,我这里拿第一行和下面2-n行枚举来。行交换成一样以后,在吧2矩阵第一列交换成一样,检测是都相同,相同就更新总的次数是不是比以前更小#include<iostream>#include<algorithm>using namespace std;int map[305][30
2015-10-13 16:56:18 476
原创 POJ 1679 次小生成树 Kruskal +DFS优化
http://poj.org/problem?id=1679 看了网上大部分都是直接多次跑 kruskal的,数据大了会耗时间。先深搜一次跑出最小生成树各点路径的最大边权,存在MAXCST[I][J]表示i——》J的路径最大的边的边权 然后逐一减去这个边加上不是最小生成树的边再取最小值便是次小生成树了#include<iostream>#include<vector>#include<alg
2015-07-28 16:41:52 327
原创 HDU 1394 线段树求逆序数
http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目链接,这题想了一段时间。关键是数据是0-n-1这个突破口,利用我们插入线段树的先后就可以很快求出来有多少个逆序对了。 例如: 4 2 1 3 4 这个案例, 我按顺序肯定先插入2的,这时候我线段树L=R=2这个点就置为1,然后往上面更新啊。于是个区间个数加一。 然后问题来了,我插入1,这时候
2015-06-24 19:27:46 438
原创 HDU 5254 棋盘占领(百度之星初赛2)
哎,写搓了,最后扫下矩阵才过。。结果自己太弱,两场都晋级失败,安慰下自己说是大一就好,心里都知道咋回事。。。。。。。#include<iostream>using namespace std;struct up{ up() { x = 0; y = 1; } int x; int y;} up1;struct
2015-05-31 21:53:01 509
原创 HDU 5246 超级赛亚ACMer(百度之星初赛第一题)
这题应该算是模拟题,因为粗心中间变量没设INT64所以一直过不了,最后几分钟才过,感觉自己还是太弱。。。。#include<iostream>#include<algorithm>using namespace std;__int64 num[10005];int main(){ memset(num, 0, sizeof(num)); int t; cin >> t
2015-05-31 11:54:00 453
原创 HDU 1698 Just a Hook
新手写的线段树,看了定义就写,代码风格不好,请大神指教,第一篇博客,感觉有必要总结经验。。`#include<iostream>using namespace std;const int size1 = 400000;//大概开到4倍int shu[size1];int lazy[size1];//懒惰标记,即是需要在对这区间的儿子们进行操作void build(int l, int r,
2015-05-30 01:35:57 293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人