自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qkoqhh

什么都没有

  • 博客(13)
  • 收藏
  • 关注

原创 bzoj4016(最短路+点分治)

题意看了好久才懂。。。先跑个最短路把树建出来。。然后就直接点分治。。记录包含k个点的最长路径及其方案数,然后直接用m-dist找就行了。。不难。。/** *         ┏┓    ┏┓ *         ┏┛┗━━━━━━━┛┗━━━┓ *         ┃       ┃   *         ┃   ━    ┃ *         ┃ >   < ┃ *  ...

2018-06-23 00:46:46 277

原创 bzoj1316(点分治)

感觉自己点分治还是太慢了。。这个可以弄成m次点分治做,不过合在一起做效果更佳。。。/** *         ┏┓    ┏┓ *         ┏┛┗━━━━━━━┛┗━━━┓ *         ┃       ┃   *         ┃   ━    ┃ *         ┃ >   < ┃ *         ┃       ┃ *         ┃....

2018-06-20 18:13:30 199

原创 bzoj2599(点分治)

菜蛙一个错误debug半天qaq其实很好写。。对没层分治而言,只需要统计到当前根的距离为i所需要的最少边数即可。。不过初始化稍微麻烦一点。。把子数中所有点都存下来然后直接把这几个点对应的距离初始化一下即可。。这样才能把复杂度降到O(nlogn)然而还是跑得太慢了。。估计选根这里写的常熟有点大?/** *         ┏┓    ┏┓ *         ┏┛┗━━━━━━━┛┗━━━┓...

2018-06-20 16:30:50 221

原创 bzoj2152(点分治)

点分治持续开坑。。这个直接按余数存点数就可以了。。然后同样的点分治套路。。然后貌似树dp可以O(n)过。。还是太菜。。/** *         ┏┓    ┏┓ *         ┏┛┗━━━━━━━┛┗━━━┓ *         ┃       ┃   *         ┃   ━    ┃ *         ┃ >   < ┃ *         ┃     ...

2018-06-16 16:14:33 148

原创 poj1741(点分治)

点分治和树dp的关联还是有点大。。所以这锅还是窝的。。点分治主要用于处理点对问题。。点分治比较套路。。做几道题应该就没什么问题了?基本思想就是选取一个点(为重心时复杂度最佳)为根,然后把问题分解成处理经过根的链和去掉根后的子树中的子问题。。然后最关键的就是怎么求经过根的链了。。。这里用的是dfs处理出深度然后将深度和小于k的记录下来,然后排序之后就可以直接用双指针计数了。。复杂度是O(n)然而会发...

2018-06-16 00:18:33 178

原创 bzoj1010(斜率优化)

复习斜率优化。。显然得到dp方程为f[i]=min{f[j]+(i-j-1+b[i]-b[j]-l)^2} j=1..i-1其中b[i]为a[i]的前缀和。。然后复杂度n^2,要优化。。直接取j,k两点作差得。。当j比k优时(f[j]-f[k])/(j-k+b[j]-b[k])+b[j]+b[k]+j+k<2*i+2*b[i]-2-2*L然后用单调队列维护下凸包即可。。。/** *    ...

2018-06-09 21:22:39 222

原创 hdu5305(状压dp)

这状压dp还是比较好的。。思维上有点难度。。。目标是使该点连的黑/白边数为度数的一半。。考虑到度数不超过8,那么边数自然也不超过4,所以只要用2位二进制来表示连的黑边数。。然后转移就可以随便转移。。主要是在二进制部分位的提取和替换。。/** *         ┏┓    ┏┓ *         ┏┛┗━━━━━━━┛┗━━━┓ *         ┃       ┃   *   ...

2018-06-09 00:46:27 229

原创 hdu5115(区间dp)

一个比较简单的区间dp吧。。不过还是想了一会儿,而且是在区间dp专题下想的。。如果直接在套题里做能不能想到区间dp呢?按照石子合并的思想,要将区间逐一合并。。然而狼杀死之后是没办法缩成一个点的,所以必须挑一个代表出来被杀。。然后怎么挑?直接枚举把。。设d[i][j]为将(i,j)上的狼杀死的最小代价d[i][j]=min{d[i][k]+a[k]+d[k][j]}+b[i-1]+b[j+1]/**...

2018-06-07 00:55:24 149

原创 hdu4055(dp)

想了好久。。没想出来qaq可以说是道好题,给处理全排列提供了一个不错的思路。。。orz雨姐姐还是强难点在于避免取重复的数。。设d[i][j]为取前i位,且只取前i个数,末位为j的方案数那么加入一个j数的时候除了i本身,其他取法必然要与前面冲突。。事实上这个冲突很好处理,把前i-1项大于等于j的加1,问题完美解决。。然后就是随便转移。。转移显然可以用前缀和把N^3降到N^2。。事实上还可以转化为2个...

2018-06-06 23:44:46 219

原创 lightoj1355(green博弈)

这个显然要运用green博弈,那么问题就落在怎么处理边权。。想了好久都没想出。。然后直接打表。。发现结论如下:边权为1直接按照green博弈的步骤来边权偶数其sg值不变边权为大于1的奇数其sg值需要和1进行异或然后这题能过了。。证明待补充。。。然后又经过了V8的提示,想出了一个证明方法(orzV8考虑一条链上的情况,且只有与根相连的边的权值大于1,设为A边,其他部分称为B子树那么先考虑A边边权为偶...

2018-06-06 23:33:49 493

原创 luogu1004(dp)

以前好像是用网络流做的这题?有点浪费啊。。直接dp就好。。令d[i][j][k][v]为走到(i,j)(k,v)点的最大值,转移的时候2个点同时走,然后如果2点重合显然只取一个,否则2个一起取。。#include<bits/stdc++.h>#define inc(i,l,r) for(int i=l;i<=r;i++)#define dec(i,l,r) for(int i...

2018-06-05 23:47:13 149

原创 green博弈/树链博弈

学了green博弈(V8称之为树链博弈)由于貌似网上没什么太多的中文资料。。所以窝就写一个。。(流下了不会英语的泪水 qaq给定一棵有根树,A和B分别轮流删边,删边后不与根联通的子树也一并删去。。那么如何判断当前必胜或者必败呢?先考虑一个简单的模型,如果这棵树是一条链,那么他不就跟取石子一样了么?那么再考虑一个复杂一点的,在根上再加一条链,那么,这不就变成了取2堆石子的问题了么?其 sg值正是这2...

2018-06-02 21:24:32 737

原创 NCPC2017A(dp+单调队列)

题目链接:http://codeforces.com/group/Us3rfLfgWv/contest/101572这题其实出得蛮好的。。先设等咖啡的时间和速度为t1、v1 ,喝咖啡的时间为t2、v2显然有一个N^2的做法。。一开始想令d[i]为到第i个咖啡厅的最短时间的。。可是精度上比较可能会出现问题。。必须用longdouble才行。。而tsy说这个其实时间最短意味着以v2速度走的路程最长啊。...

2018-06-01 13:23:45 222

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除