分治
文章平均质量分 61
TA201314
这个作者很懒,什么都没留下…
展开
-
借教室[NOIP2012]解题报告
思路一:O(mlogn) 裸的线段树,维护最小值和区间修改;由于是第一次写线段树,所以不太会写。代码: #includeusing namespace std;#include#include#include#includechar * ptr=new char[50000000];int tree[2500000],lazy[250000原创 2014-11-05 16:45:35 · 2204 阅读 · 1 评论 -
[Ahoi2008]Rectangle 解题报告
又是喜闻乐见的只会傻逼做法的题。。跟我跑得差不多快的人都写了1K,我写了快4K。。 并不知道他们怎么搞的,说下我的做法: 考虑按x从大到小的扫描线,每次在矩形的左下角(x1,y1)(x_1,y_1)插入一个数y2y_2,判断一个矩形(x1,y1)−(x2,y2)(x_1,y_1)-(x_2,y_2)是否被包含就相当于询问矩形(0,0)−(x1,y1)(0,0)-(x_1,y_1)的最大值是否大于原创 2016-04-21 21:54:48 · 638 阅读 · 0 评论 -
[bzoj3956]Count 解题报告
先来说一下我的傻逼做法: 注意到合法点对只会有2N个,因为一个点作为较小的端点+左/右端点只会有一次,就是和左/右边第一个大于等于它的配对。所以直接上主席树就行。 时间复杂度O(nlogn)O(n\log n)再来膜拜一下morestep大爷的做法(我最近好像每道题都是各种傻逼做法。。): 注意到实际上这道题的点对关系只有相离和包含两种,不会出现abab这种情况。 而且实际上区间最大值会把这原创 2016-04-19 10:54:20 · 991 阅读 · 0 评论 -
[Hnoi2016]序列 解题报告
我们考虑从左往右扫右端点和从右往左扫左端点的两遍扫描线。(以下选取从左往右的扫描线来说明)考虑每个点向它左边第一个比它大的点连边形成的树。设i左边第一个比它大的点的坐标是原创 2016-04-26 10:44:54 · 1383 阅读 · 0 评论 -
[bzoj3720]Gty的妹子树 解题报告
大概看了一眼网上的题解,跟块爷一样都写的会被卡的分块。(反正块爷出的题也不会卡自己。。) 这里说一种比较科学的做法。就是用块链维护dfs序。 维护每个节点按dfs序是在哪个块的哪个位置,对每个块维护块中节点的最浅深度、它的下一个块是哪个块,块中节点按dfs序排序的序列,按权值排序的序列。 一开始的时候每B个分一块,最后一块节点数≤B\le B。查询的时候在两边的块暴力,在中间的块里二分,时间复原创 2016-04-22 21:55:14 · 1435 阅读 · 0 评论 -
[bzoj3065]带插入区间K小值 解题报告
喜闻乐见的用的很麻烦很傻逼得搞法。。 先用一个块链维护序列,做到O(n√)O(\sqrt n)插入,O(1)O(1)比较两个点在序列中位置的大小。时间复杂度是O(nn√)O(n\sqrt n)。 再用一个块链维护权值,每个块维护按位置排序的序列。查询的时候从小到大枚举每个块,先在块里二分统计块内在查询区间中的个数,然后如果发现答案在这个块里,就直接暴力找到第k小的是哪个。取块大小等于O(nlog原创 2016-04-23 14:20:51 · 1531 阅读 · 0 评论 -
匹配 解题报告
求一棵树的最大匹配以及最大匹配方案数模m。 n≤1.5∗106,m≤109n \le 1.5*10^6,m \le 10^9 时间限制:2s 空间限制:32MB = =这是一道卡内存傻题,一个显然的DP方程是设f(n,0/1)为这个点向其父亲的边选或不选这个子树能得到的最大匹配,然后g(n,0/1)是其方案数,然后随便转移一下就好了。 注意到状态有4*n个,而内存太小了,最多只能开5*n的原创 2015-07-09 15:00:00 · 754 阅读 · 0 评论 -
[COGS902]乐曲主题
这个题一开始想的是hash+枚举长度+sort寻重O(N2log2N)≈50002∗12≈3∗108O(N^2log_2N)≈5000^2*12≈3*10^8,但是模一个数就WA了,模两个数就T了;卡得不行不行的。 问题在于,实际上长度显然是单调合法的(如果len行,则小于len一定行),所以我们可以变枚举为二分。(宏哥Orz) !!这也正是我没有想到的了,最近总原创 2015-03-29 07:47:13 · 766 阅读 · 0 评论 -
[CF231DPhysical Education and Buns]解题报告
这道题应该有好多好多做法。。每个都差一点想到了,但还是没有想到正解。 ①没有想到枚举公差的时候只与在线最上面的点和在线最下面的点有关,即首项=Max+Min>>1. ②算出P∈[0,⌈4∗106n−1⌉\lceil \frac {4*10^6} {n-1} \rceil]之后,没有意识到我们可以在此基础上枚举n,使得时间复杂度为4∗1064*10^6. ③凸包的解法也是原创 2015-03-15 15:36:56 · 1169 阅读 · 0 评论 -
刺杀大使 解题报告
这道题应该说是非常好的一道题,题意大致是在一个矩阵中寻找一条从最下面一行到最上面一行经过最大的数最小的一条路。时限是2s。看到这题第一直觉DP,但发现DP方程可以互相转移,于是DP变成了图论。。于是改成了Dijkstra,算一算时间复杂度O(mnlog(mn))≈8*10^7,正好2s差不多;就写开了。#includeusing namespace std;#include#incl原创 2015-01-03 13:52:48 · 1212 阅读 · 0 评论 -
[NOI2010]超级钢琴 解题报告
超级钢琴【问题描述】小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中Ai可正可负。一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的原创 2015-01-17 14:09:16 · 1958 阅读 · 2 评论 -
[Ahoi2013]作业 解题报告
很久以前用奇葩做法搞的题。。现在补个解题报告。传统做法: 考虑莫队,就需要我们设计一个O(1)O(1)插入,O(n√)O(\sqrt n)查询的数据结构,显然就需要对权值分块,记每个数出现次数和每个块两问的答案(或者第一问另写个主席树也可以,我比较懒)。莫队的块就分成nm√n\over \sqrt m块。时间复杂度O(mn√+nm−−√)O(m\sqrt n+n\sqrt m)。非常好写,跑的飞快原创 2016-04-22 17:00:09 · 1148 阅读 · 0 评论