思路题
cjk_cjk
这个作者很懒,什么都没留下…
展开
-
BZOJ1029 [JSOI2007]建筑抢修(贪心+堆)
【题解】仅按T1或T2从小到大修理显然是不正确的 可以发现:对于某个建筑集合,若它们都能被抢修,则按T2从小到大的顺序修理是最优的 证明:(相邻交换法)对于建筑物(a1,b1)与(a2,b2),(a,b)代表(T1,T2)且T前+a 实际修理时间 允许时间 实际修理时间原创 2015-01-31 00:59:28 · 842 阅读 · 0 评论 -
BZOJ3173 [Tjoi2013]最长上升子序列(离线处理+Treap+LIS)
【题解】离线处理:第n个数的插入不会改变前n-1个数的相对位置,因此可以直接求得最终序列,第i次操作的答案就是仅含1~i的LIS 最终序列可以用Treap求得;由于仅含1~i的LIS = max( 仅含1~i-1的LIS , 以i为结尾的LIS ),可以用O(N*logN)的动态规划求出以每个数为结尾的LIS,再递推求出每步答案 【代码】#include#in原创 2015-06-22 11:25:26 · 541 阅读 · 0 评论 -
BZOJ1145 [CTSC2008]图腾totem(数学计数+树状数组)
【题解】拜读了不少网上题解,现在自己来复述一遍设 f(abcd)为:当选出的四个数相对大小关系为abcd时,有多少种选择方式 则 ans = f(1324) - f(1243) -f(1432)用拆分法简此问题 f(1324) = f(1x2x) - f(1423)f(1243) = f(12xx) - f(1234)f(1432) = f(14xx) -原创 2015-06-20 16:10:06 · 932 阅读 · 0 评论 -
BZOJ2440 [中山市选2011]完全平方数(莫比乌斯函数+容斥原理+二分答案)
【题解】本题中完全平方数不考虑1在1~k*2中二分答案:对于x,只需求出1~x中有多少个数不是完全平方数的倍数 由容斥原理:1~x中 不是完全平方数的倍数 的数的个数 = x - 是至少1个质数n次方的数的个数 + 是至少2个质数n次方的数的个数 - 是至少3个质数n次方的数的个数 …其中的系数1的正负刚好与 因式中多次出现的质数种类数的奇偶性一致,因此系数可以用类似莫比乌原创 2015-06-03 22:58:11 · 672 阅读 · 0 评论 -
BZOJ246 [中山市选2009]谁能赢呢?(讨论奇偶性)
题意:给定一个n*n的棋盘,一个石头被放在棋盘的左上角。两人轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格 子之前不能被访问过。谁不能移动石头了就算输。问最后谁能赢?考虑n的奇偶性:偶数个格子的情况:棋盘可以被1*2的骨牌完全覆盖,Alice先移动一次覆盖一个骨牌,此后无论Bob移动到哪里,Alice必能移动到棋子所在骨牌的另一格,先原创 2015-06-07 23:19:48 · 639 阅读 · 0 评论 -
BZOJ3631 [JLOI2014]松鼠的新家(树链剖分)
直接进行树链剖分 每一轮,路径上的点加1最后输出答案时,除起点外的结点权值要减1只用到区间增减,单点查询和值,因此并不需要线段树来维护 另一种思路:类似前缀和的思想 从起点x到终点y,只需给x,y两个结点加1,给LCA(x,y),fa[LCA(x,y)]减1,最后做一次从底到根的递推即可求出每个点在多少条链上 树剖:#include#include#in原创 2015-05-20 02:04:42 · 1290 阅读 · 0 评论 -
BZOJ1854 [Scoi2010]游戏(并查集/二分图匹配)
【题解】将一个装备抽象成一条边,它连接着编号为其属性值的两个结点 这样,取装备等价于取边; 每个装备只能用一次,等价于在每条边上仅能取一个端点 因此,连好所有的边,构成一个个连通块,它们产生了这样一条性质:对于某一连通块,若其为一棵树,则它的所有结点(属性值)中,只有一个不能取。(因为树的边比点少一,每条边上只能取一个点)原创 2015-06-28 23:30:49 · 688 阅读 · 0 评论 -
BZOJ1202 [HNOI2005]狡猾的商人(并查集)
【题解】给出[l,r]的区间和,相当于s[r]-s[l](前缀和思想)一旦已经知道了 s[a]-s[b],s[b]-s[c],再给出一条[a,c]就可以判断"账本的真假"了 将每条这样的信息(l,r,w),l,r放入一个集合中,用并查集来维护,并维护cha[l]=s[root]-s[l],cha[r]=s[root]-s[r]若 l,r已经在同一个集合中,就直接查询cha[l]原创 2015-06-29 13:45:47 · 2255 阅读 · 0 评论 -
[NOI2014]起床困难综合症(二进制拆分+贪心)
【题解】还是老思路:二进制位运算的题,我们单独考虑每一位,最后合并答案 这道题中:在0~m中选一个数"丢"到那一堆运算里,相当于判断从每一位"丢"下去0或1后,得出结果的高位尽量是1的方案 为了方便,我们直接丢两个数:0000000……000与1111111……111,就可以O(2*n)求出每一位"丢"0或是"丢"1能得到的方案了,并不需要每一位"丢"两次 然后从高位到低位贪心地判原创 2015-07-13 00:20:27 · 891 阅读 · 0 评论 -
[NOI2014]魔法森林(动态加边+SPFA)
【题解】求两个变量构成的最优值,可以考虑限制一个变量,最优化另一个 观察此题,可以得到这样一个思路:假设已知答案中的Ai的最大值不超过x,只需最小化1到n路径上的Bi的最大值 不难想到二分这个Ai的上限x更新方式为SPFA,即,设d[i]为:只考虑Ai然而这样的话,对于每个x,d数组都要重新求 不如我们按Ai从小到大加边,随着加边来更新 BiMax 的最小值,这样d[i原创 2015-07-13 00:45:55 · 2732 阅读 · 3 评论 -
[NOI2014]随机数生成器(模拟+贪心)
【题解】先一步步按题目的操得出序列 然后在方阵中找出最小的数(对于初始方阵是1)的位置(x,y)再在矩阵(1,1)-(x,y),(x,y)-(n,m)中分别找出最小数的位置 递归是没必要的,也不容易找出每个子矩阵内最小的数 可以反过来考虑:1,2,3……能不能依次使用?1肯定可以,2的话,必须在1划分出的子矩阵(1,1)-(x,y)或(x,y)-(n,m)中才行原创 2015-07-14 11:42:39 · 1589 阅读 · 0 评论 -
BZOJ2957 楼房重建(线段树)
【题解】题目描述有误,一栋楼房可见,应满足其最高点到(0,0)的连线不与其他楼房相交 这个条件可以等价为:它的斜率比之前的任何一个都大(相等也不行)因此,只需O(logN)修改、O(logN)求出区间[1,n]内 比之前的任何一个数都大 的数有多少个 能使用线段树的条件是:两个子问题可以合并 本题中,记cntv[o]为:仅考虑o所代表的区间,有多少满足条件的数 那么首先原创 2015-06-21 15:17:21 · 1849 阅读 · 0 评论 -
poj3622 Gourmet Grazers(贪心+Treap)
【题解】将牛和草分别按鲜嫩度从大到小排序 然后将牛扫一遍:对于第i头牛,将鲜嫩度>=b[i]的草的价格加入平衡树,找出价格>=a[i]的最小的草,计入答案并删除之 正确性分析:若i【代码】#include#include#define INF 2000000000typedef long long LL;int a[100005],b[100005]原创 2015-06-21 18:41:59 · 487 阅读 · 0 评论 -
BZOJ1758 [Wc2010]重建计划(二分答案+点分治+单调队列)
【题解】利用平均数的一个性质:若每个元素都减去x,平均数也减小x,因此可以二分答案Ave,求所有边权值减去Ave后,有无含L~U条边,权值和非负的路径 -> 树的含L~U条边的最长路权值和是否>=0点分治即可。优化:1.先求root,再二分,可以避免多次求root2.先只求经过root的路径的最优Ave,并把它作为 递归求不经过root的路径 时的二分下界 判断原创 2015-02-20 18:47:15 · 724 阅读 · 0 评论 -
BZOJ3626 [LNOI2014]LCA(树链剖分)
【题解】首先考虑任意两点u,v的LCA的deep:若将0到u路径上所有点标记,则deep[LCA(u,v)]等于从v上溯到的第一个被标记点的deep,而再往上的话一直到根,经过的点都是被标记点 由前缀和的思想,将0到u路径上所有点权值设为1,其他点权值为0,那么deep[LCA(u,v)]等于SUM(0到v路径上的点权和)再进一步想,deep[LCA(u1,v)]+deep原创 2015-02-17 22:44:52 · 564 阅读 · 0 评论 -
zoj2614 Bridge(自适应Simpson公式+二分答案)
【题解】首先求出分出的最少区间数:n=ceil(B/D),ceil():向上取整然后依据每一段的宽度w=B/n及弧长L/=n来求"深度"h即可,答案为:y=H-hw,h可确定一条抛物线,其弧长L关于h单调递增,考虑二分h,验证弧长设抛物线顶点为原点,由(w/2,d)在抛物线上可知其方程为:y=a*x^2,其中a=4*h/(w*w)可导函数f(x)在区间[a,b]上的弧长原创 2015-03-01 02:06:05 · 761 阅读 · 0 评论 -
[NOI2011]兔农(斐波那契数列+乘法逆+矩阵加速)
几乎是抄的,啥都不要说了贴上策爷和VFK的链接好了http://jcvb.is-programmer.com/posts/39528.htmlhttp://vfleaking.blog.163.com/blog/static/174807634201341721051604/还是写两句吧。关键是将新数列每个元素模k后写出,在经减1余0的元素后面换行,并找规律发现每行原创 2015-03-15 22:58:58 · 832 阅读 · 0 评论 -
[NOI2010]航空管制(贪心+堆)
【题解】堆版本的将贪心题强行转化为数据结构题 先按照相对起飞顺序限制(a,b)反向建有向图,每次找出入度为0的结点中k值最大的来起飞,再将它所指向的结点入度减1这个过程可以用大根堆完成,每遇到入度为0的点就加入堆中,保证堆顶k值最大即可 由于此时加入堆的点,在以后一直是可用的,而题目又保证有解,所以这样处理第一问就行了 对于第二问的点i,让其"占着位置"却"禁止删除原创 2015-03-31 23:58:24 · 1544 阅读 · 0 评论 -
[NOI2010]超级钢琴(堆)
【题解】先预处理出前缀和s[],问题转化为:求(s[j]-s[i])的前k大值之和 (0对于每一次求最值的过程:若i相同,相当于求max(s[j])-s[i],属于RMQ问题 若i不同,存下每个i对应的max(s[j])-s[i],并存入大根堆 k次询问,每次都从堆顶弹出一个元素,计入答案,并将该元素对应的三元组(i,L,R)拆成两个:(i,L,Fr-1)与(i,Fr+1,R)原创 2015-03-31 23:53:53 · 508 阅读 · 0 评论 -
[NOI2010]海拔(最小割)
【题解】先寻找每个点的最优高度范围:首先每个点的海拔不可能比周围四个点都高或都低,然后设某点高度为x,假设围四个点高度已知,随便考虑几种情况,可以发现:总体力值关于x单调(增或减)因此可以得出结论:每个点的海拔都与周围的某个点相同 => 可以推出(我是猜出)每个点高度都是0或1,且按高度标记每个点后,图上只有2个连通块 然后就是熟悉的最小割转最短路了,给每个域编号后建新原创 2015-04-01 00:03:26 · 621 阅读 · 0 评论 -
[NOI2013]树的计数(树的DFS,BFS序性质)
感觉对树的理解更深了点首先想到对BFS序列进行划分,那么方便起见,将BFS序列改为1~n的顺序排列,对应地改变DFS序列 对于同一种划分方案,有几棵满足DFS序的树呢?这相当于问子节点到父节点有几种连法。在两种不同连法中,父1,父2,子 的相对顺序不同,所以只有一种符合DFS序。也就是说:每种划分方案最多对应一棵树 接下来需要检验一种划分方案是否可行 每两次原创 2015-04-26 02:04:38 · 1682 阅读 · 0 评论 -
[APIO2009]采油区域(枚举+递推)
切分矩形,递推辅助:观察分割方案,可(很)以(难)发(想)现(到),将m*n的格子切两次,成为三个矩形区域,三个k*k的块一定分别包含于其中一个区域 题目就转化为:求指定矩形区域中的最大的 k*k块的元素和 考虑用递推来预处理,优化枚举效率 预处理:二维前缀和 s[i][j]:右下角为(i,j)的k*k块的元素和 ul,ur,dl,dr[i][j]:从 左上角、原创 2015-05-05 02:08:07 · 1278 阅读 · 1 评论 -
BZOJ2819 Nim(dfs序+树状数组)
【题解】题目大意:给定一棵树,有两种操作:1. 修改一个节点的权值 2. 查询两点之间路径上所有点的权值异或值 运用前缀的思想 首先xor运算有一个性质:Xor[l,r]=Xor[1,l]^Xor[1,r]所以,设 Xor[x]为从结点x到根经过的所有结点的权值异或,则 x到y路径上的点权异或值为:Xor[x] ^ Xor[y] ^ Val[LCA(x,y)]原创 2015-06-17 23:10:30 · 589 阅读 · 0 评论 -
BZOJ1044 [HAOI2008]木棍分割(二分答案/单调性优化dp+递推优化)
【题解】f[i][j]:前i个数分j段的最小值设 f[i][x]:前i个数分j段的最小值f[i][x]=min{ max(f[j][x-1],s[i]-s[j]) }二分答案即可然而我的方法类似于斜率优化:假设j比k优,讨论j,k的大小关系,可得(只写最后结论):1) j<k(前优) f[j][x-1]<f[k][x-1] 且 s[j]+f[k][x-1]>...原创 2015-06-27 02:28:46 · 525 阅读 · 0 评论