刷题数:6 最近几天学了线段树,学得很仔细。里面的代码都基本会敲,算法原理也都懂了,扫描线也懂了。 线段树就是每个节点代表一个区间,然后左右节点除2缩小,数组下标乘2变大。用来对序列进行维护,支持查询修改。 而扫描线我在第三篇博客里有提起我对这个算法的理解。 算法竞赛进阶指南210~213页。 线段 Read More
posted @ 2019-08-17 16:10 Ldler Views(83) Comments(0) Diggs(0) Edit
题目链接 题意:已知每个星星的坐标和亮度,求用一个宽w,高h的矩形能圈住的星星的亮度总和最大是多少。 思路:我们把每个星星置为w,h矩形的左下角,这样围才是最多的情况。然后将每个这样的搞出来并把其矩形赋权为其亮度,可以发现当两个矩形重合的地方就可以用亮度加起来 表示,因为在那个地方做宽w高h的矩形两 Read More
posted @ 2019-08-17 16:01 Ldler Views(198) Comments(0) Diggs(0) Edit
题目链接 题意:给n个矩形到一个平面上,求他们的总面积。 思路:将他们的x坐标从小到大排序,然后根据对于当前x坐标而言他们的y坐标区间进行相应的维护某些变化,这种解题思路就是扫描线。对于这题,我们要维护的是y区间的覆盖情况。 然后用覆盖的总长度去乘以当前两个x之间的距离,再全部加起来就是答案。对于如 Read More
posted @ 2019-08-17 15:40 Ldler Views(163) Comments(0) Diggs(0) Edit
题目链接 题意: 给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 MAXx≤l≤r≤y{∑r,i=l A[i]}。 2、“2 x y”,把 A[x] 改成 y。 对于每个查询指令,输出一个整数表示答案。 思路: 用线 Read More
posted @ 2019-08-17 15:24 Ldler Views(196) Comments(0) Diggs(0) Edit
题目链接 题意:给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。 2、“Q l r”,表示询问 A[l],A[l+1],…,A[r] 的最大公约数(GCD)。 对于每个询问,输出一个整数表示答案。 Read More
posted @ 2019-08-15 18:57 Ldler Views(551) Comments(0) Diggs(0) Edit
刷题数:5 今天学了树状数组,感觉看书比以前光看博客刷题有用多了,对树状数组了解深刻了不少,主要是用来维护前缀和,然后进行一些问题的求解。 CF补题:https://www.cnblogs.com/2462478392Lee/p/11343965.html 还有个线段树的,明天正好学,后天补。 树状 Read More
posted @ 2019-08-13 20:11 Ldler Views(146) Comments(0) Diggs(0) Edit
题意:给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。 2、“Q l r”,表示询问 数列中第 l~r 个数的和。 对于每个询问,输出一个整数表示答案。 思路:用树状数组进行区间操作。用一个数组b Read More
posted @ 2019-08-13 20:03 Ldler Views(221) Comments(0) Diggs(0) Edit
题目链接 题意:有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高。现在这n头奶牛站成一列,已知第i头牛前面有Ai头牛比它低,求每头奶牛的身高。 思路:第k头牛的身高hk为1~n中除掉hk+1,hk+2……hn中第Ak+1小的。所以可以维护一个01序列,当找其中的第ai+1 Read More
posted @ 2019-08-13 19:03 Ldler Views(195) Comments(0) Diggs(0) Edit
题目链接 题意:给你n个点分别为(i,y[i]) 如果三个点(i,yi),(j,yj),(k,yk)(i,yi),(j,yj),(k,yk)满足1≤i<j<k≤n且yi>yj,yj<yk1≤i<j<k≤n且yi>yj,yj<yk,则称这三个点构成V图腾; 如果三个点(i,yi),(j,yj),(k, Read More
posted @ 2019-08-13 11:08 Ldler Views(230) Comments(0) Diggs(0) Edit
题目链接 题意:给出n个点,再给出n-1条路,想一口气从1走完n个点的最小距离。 思路:好像它不构成环!md没看清题目,所以说每次遍历完全部的点后,最短的路就是每条边的距离*2减去最长路的距离。 所以简单的dfs求最长路。 #include<cstring> #include<algorithm> Read More
posted @ 2019-08-13 09:38 Ldler Views(176) Comments(0) Diggs(0) Edit