自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 bzoj4565 [HAOI2016]字符合并 结论+状压+区间dp

如果k==2的话就是记搜,但这个题用记搜的思路的话是需要枚举k个断点的,所以对于枚举断点,就很可能有优化,比如到一个断点,一个决策的最优值于是考虑区间dp模型,相当于是插入一个数,然后看影响。然后合并显然是从插入点到另一个端点,所以可以从插入点到另一个端点枚举区间然后插入的点会和左边的点合并,所以可以状压状态,有用的只有k位,大于k的会合并然后有一个非常非常重要的潜在条件就

2018-01-31 20:22:57 220

原创 bzoj1005 [HNOI2008]明明的烦恼 prufer+组合数学

直接考虑prufer序列,每个度数-1就是再n-2的序列中出现的次数对于不确定的-1,每个没有填的位置都是有可能填的,所以直接离散用乘法原理对于确定的就是组合数选位置,注意要开高精对于高精除法的话就使用类似exlucas的方法提取因子,最后再乘码:#include#include#includeusing namespace std;int ans[1999999],d

2018-01-30 17:15:12 196

原创 bzoj3198 [sdoi2013] spring 哈希挂表+容斥

6这个数据非常小,而且hash只能用来匹配,并不能检验完全不匹配,对于处于对立面的小数据就需要使用大型暴力容斥但这个题超级卡hash,不知道是数据的锅还是题目本身的性质,直接上双hash都过不了首先hash是被hash的数规模越小越不容易错,所以对于枚举每个数容斥不如先容斥再枚举每个数,这样容斥的位数确定就可以单独使用hash,规模会小很多,所以就是用了hash挂表。先正常用long lo

2018-01-28 21:47:22 229

原创 bzoj1038 [ZJOI2008]瞭望塔 枚举

这个题实际上求的是半个凸包的核,但只需要枚举直线两两交点和地上的点就可以很快跑过根据线性规划原理答案应该在直线交点上,为什么还要看地上的点?因为实际上可行域是有下限的,有可能下限与地线重合码(注意eps和运算中的括号):#include#includeusing namespace std;long double ans=99999999999999,X,Y,K1,K

2018-01-28 11:18:23 212

原创 bzoj3203 [Sdoi2013]保护出题人 凸包+二分

一开始以为丧尸可以挡伤害,然后发现这个题目的设定非常**然后就考虑每个丧尸到门口的时间,由于伤害是继承的,所以前缀和分配然后答案=Σ(HP前缀和*速度/距离)  设 HP/l=k ,l=x+nd   由于后面的点向后和向上的距离一样,所以两点间的斜率一样HP=k(x+nd)设Y=HP,X=x+nd  ,则要求对一个 点b=0的最大斜率 ,根据上面的结论可以维护上凸包注意在栈上二

2018-01-25 17:19:09 212

原创 bzoj3129 [Sdoi2013]方程 容斥+扩展lucas

调了两天,全是低级错误和脑子问题对于>=的,直接用m减掉对于然后由于>=和但由于我简单容斥做多了,所以就直接用全合法的-全不合法的然后一定要放弃合法的-不合法的这种想法,应该改成0不合法-1不合法+2不合法-3不合法。。。然后快速幂还没取模了,exlucas的快速幂还算错了次方码:#include#includeusing namespace std;

2018-01-24 19:20:18 207

原创 bzoj3533 [Sdoi2014]向量集 可持久化凸包+二分

首先,x和y都小于一个向量且都大于一个向量的点一定是没有用的这样就相当于挖掉了决策中位置偏中间的点,然后要求ax+by的最小值设 ax+by=k,则 y=k/b-a/bx  ,就变成了类似斜率优化的东西,相当于拿一个斜率去卡一个点卡的点一定在凸包上,所以维护凸包,然后二分斜率查询就可以了这个题要求支持查询历史版本的凸包,可以用线段树的思想,树分治的复杂度分析方法,将最终凸包2分成若

2018-01-22 22:02:06 496

原创 bzoj3238 [Ahoi2013]差异 后缀自动机

这个题虽然看起来比较麻烦,但其实有一点搞懂了就好做了每一个后缀的前缀的lcp一定是这个串里的子串,对于全部子串,如果它不是后缀,那一定可以找到这个串对应的后缀,而这样的子串和后缀子串是没有区别的,因为他们出现的位置相同,而后缀自动机记录每个子串的出现次数,这个子串和以它开头所在的后缀相同的都是这个子串,由于SAM的高压性,这个子串余剩的部分一定不会与它所在后缀相同(不然会被并成一个

2018-01-20 20:35:39 491

原创 bzoj2244 [SDOI2011]拦截导弹 cdq分治

这个题看起来是二维偏序,但实际上是三维偏序(高度、速度、顺序)所以就用顺序减掉一维,cdq减掉一维,用数据结构减掉一维,然后求每个点的概率就等于 经过他的方案数/方案总数然后首先要知道lis的答案,用cdq分治转移一遍即可出解,但由于要算方案总数,所以需要记录 到一个点 dp值最大时的方案数但经过他的方案数不只有到一个点的方案数,还有他到终点的方案数,这时有一个比较显然的结论,

2018-01-20 16:23:20 213

原创 bzoj4517 [Sdoi2016]排列计数 组合数+错排

这个题描述的本身就很离散,所以就相当于选出m个位置,剩下的位置的错排错排的公式也不是很难推,注意及时利用以前的结果就好了,实在不行根据印象打表找规律设有n个数  ,n个位置,第一个数一定不能选第一个位置,所以可选的位置就有 n-1个考虑剩下的n-1个数,一定有一个数可以放在1的位置,那这个数放在1的位置的方案数就等于这个数不放在1的位置+这个数放在1的位置= f(n-1)+f(

2018-01-19 18:53:04 245

原创 bzoj3572 [HNOI2014]世界树 虚树 +乱dp

这个题有Σ的条件,肯定还是用log结构求询问点相关了但这个题是点之间的距离关系,所以本来想用中点来代替原来的lca,但中点的个数不满足任何单调性,而且个数也不是n个所以还是要用lca,所以考虑lca和中点的关系,lca的好处就是n个点对之间只有最多n个lca这时就需要一定的转化,把原来的确定中点问题变成确定 最少影响点 问题因为如果把所有拐点表示出来,剩下的就都是线段了自然容易想到讨论lca的归属

2018-01-18 21:50:14 208

原创 bzoj2286 [Sdoi2011]消耗战 单调栈+lca

这个题意思非常明确,就是删除尽量小的边使1和指定点不连通对于一次询问,dfs一遍即可,但需要log级别的然后条件里有个Σ,显然复杂度和他有关,对每个点都需要一个均摊log的然后有两个基本思路,1、树分治2、lca1会打乱原树,所以不行,只有2然后手玩发现一些东西:1、一个点被选,子树就无所谓了2、在一个子树内,lca是单调往上的根据2,想办法利用这个单调性来解决问题想到取dfs序,然后子树里lca

2018-01-17 19:50:35 177

原创 bzoj2282 [Sdoi2011]消防 直径+二分+树dp

这个题要求最大值最小,那就是铁打的二分然后考虑检验,可以根据二分值卡极限找距离然后判断是不是一条路径再判断路径和这样其实dp就可以做了,但有更方便的做法,就是求出直径然后变成队列操作,由于直径上的点最远的点都在直径上,所以就只用判断直径,下限是非直径点到直径的最大距离上限是直径长度但注意有可能直径上的边每一条都比s大,这时需要扫一遍所有的边,判断这条边到直径两个端点的距离即

2018-01-15 18:51:06 220

原创 bzoj2245 [SDOI2011]工作安排 费用流

注意这里的分段函数只和个数有关,与种类无关,然后直接建图,注意开long long码:#include#include#include#includeusing namespace std;#define N 1000005int tot=-1,zhong[N],hou[N],qj[N],xia[N],v[N],i,j,s,t,n,m,x,y;long long

2018-01-14 19:46:56 206

原创 bzoj1941 [Sdoi2010]Hide and Seek 线段树

这个题其实应该算4个二维偏序,因为枚举每个点可以根据公式分成4个象限,4种计算方式,所以就考虑怎么求x和y的大小关系集合首先,按x排序再枚举,可以保证后面的x大于前面的x,就相当于分成了两部分,剩下的就是区分y的大小关系,相当于是在两个x的区间里找一个值左侧和右侧的信息,如果分成4个信息,就相当于维护四个值:x+y,x-y,y-x,-x-y的最大最小值,   对于查询,就是标准的线段树问题

2018-01-11 18:55:02 223

原创 bzoj2242 [SDOI2011]计算器 exgcd+ksm+bsgs

三个板子,注意bsgs的时候要特判无解,即a%p==0||b%p==0(bsgs还是很巧妙的。。)码:#include#include#include#includeusing namespace std;#define ll long longmapma;mapdui;ll a,b,p,ans,x,y,i,j; int T,k;ll ksm(ll a,ll b

2018-01-10 21:06:31 237

原创 bzoj1975 [Sdoi2010]魔法猪学院 a*+堆

这个题型现在才做真是太失败了,因为noip去年就考了及其类似的题。。方法还是暴力中比较巧的,就是不断增广,取和和当前估价值差值最小的操作,类似dijkstra的贪心方法,一直增广到目标为止主要思想就是利用dp的结果指导暴力,然后用堆取贪心码:// luogu-judger-enable-o2#include#include#include#includeusing

2018-01-09 18:10:33 196

原创 bzoj2462 [BeiJing2011]矩阵模板 hash

头一次见这么卡常的题(仅限bzoj),还没卡过,不过省选的数据和时限应该没啥问题这个题出的不太好,毕竟看脸,但出题人卡一些hash又放过一些hash真是不懂为什么码(tle):#include#includeint n,m,a,b,i,tu[1005][1005],j,k,l,lhash1,hash1[15];long long P=998244353,qsum[1005][1

2018-01-08 16:20:11 249

原创 bzoj2461 [BeiJing2011]符环 dp

纯粹的dp,记录上面的左括号数,下面的左括号数,下面的右括号数上面多出的右括号是一定不合法的,下面的多出的右括号一定在左括号左边,不然会被消掉码:#include#include#includeusing namespace std;#define ll long long ll f[55][55][55][55],ans;int T,i,j,k,l,len;ch

2018-01-07 19:28:37 216

原创 bzoj1926[Sdoi2010]粟粟的书架 主席树+前缀和

强行二合一。。前50%首先想到200颗主席树,但好像空间会炸,然后看到h【i】查询的时候二分,注意相等的要找到最左边,并特判无解后50%直接线段树即可码:#include#includeusing namespace std;#define N 500005int rt[N],sz[N*20],a[205][205],h[N],x,y,xx,yy,sum[N*2

2018-01-07 11:27:27 246

原创 bzoj1951 [Sdoi2010]古代猪文 lucas+CRT+exgcd

本来以为要套exlucas的,结果不用,码量就少了很多注:CRT要  区分清楚加减号码:#include#include#define ll long longusing namespace std;ll p[5]={0,2,3,4679,35617};ll x,y,a[5],jc[5][50005],i,j,n,g;void exgcd(ll a,ll b

2018-01-06 20:24:31 171

原创 bzoj1923 [Sdoi2010]外星千足虫 压位+高斯消元

这个题手动压位非常麻烦,因为对于同一块,后加的数比先加的数小,所以判断最后一位的时候需要定位到最后一块最小的数,而且在找元的时候还不能找到这个位置注意块的总数每个是30个不要存错,码:#include #include#includeusing namespace std;int n,m,i,j,k,l,cnt,ans[2005],a[2005][2005],p,er[

2018-01-06 17:50:59 183

原创 [SDOI2009]地图复原 递推

首先要知道,每个标有S和T的格子都是要走的,,不然没法做然后就从左上开始,依次通过左边和上边的道路情况连下边和右边的路根据左边和上边的路的有无可唯一判断出当前格子右边和下边的连接情况码:#include#includeusing namespace std;int n,m,i,j;char ch,tu[2005][2005];int main(){ scanf

2018-01-06 10:31:22 186

原创 bzoj2547 [Ctsc2002]玩具兵 dp+二分匹配

先手玩几个小结论:1、步兵一定和骑兵换→走的路径可转化为步兵路径+骑兵路径+步兵路径+...可匹配点所以相当于求k*2个点到另外2*k个点的最小换次花费,这个用类似spfa的dp可搞然后天兵只有一个,他可以任意走,所以坐标可以是任意值,显然最有利的方法是直接把一个送到目标点所以用的魔法次数==天兵送的人数所以枚举次数,然后依次加上码:#include#incl

2018-01-05 21:21:51 300

原创 bzoj1876 [SDOI2009]SuperGCD 辗转相减+高精

这个题是给有数竞基础的人出的吧,不然没法做辗转相减法+优化,这个题卡时,要压1000注:1、赋值顺序2、特判3、手残码:#include#include#include#includeusing namespace std;int a[10005],b[10005],la,lb,i,j,jw,ans[10005],daan[10005];char c

2018-01-05 15:28:23 369

原创 bzoj1228 [SDOI2009]E&D 找规律

这种题就是考验找规律能力,而且还很难、而且好多题都是这种题,都是找规律题,证明网上一个也没有直接给规律:if(a%2&&b%2)sg(a,b)=0;sg(a,b)=sg((a+1)/2,(b+1)/2)+1;尝试证明,结果并证不出来、、以前还有一个斐波那契数列中没出现过的数字的斐波那契数列,也是找规律,证明也没有简直是毒瘤题码:#include#i

2018-01-04 19:48:28 307

原创 bzoj1877 [SDOI2009]晨跑 费用流

注意这个题要求每个点也只经过一次,所以直接复制点就行了其他的都和普通费用流一样了码:#include#include#include#includeusing namespace std;int tot=-1,xia[405],zhong[100005],v[100005],c[100005],x,y,z,ans1,ans2,hou[100004],i,j,n,m,d

2018-01-04 14:45:34 237

原创 bzoj2186 莎拉公主的困惑 积性函数

这个题其实就是考察了积性函数phi的一些性质首先,phi(2)*4=phi(8);∴ phi(P)*P^n=phi(P*P^n)所以 phi(2*3*4)=phi(2*4)*phi(3)=phi(2)*phi(3)*4=phi(2*3)*4所以就可以求前缀积了,特判质数乘上phi然后由于phi的循环性,答案=phi(m!)*n!/m!码:#include#

2018-01-03 20:16:11 234

原创 bzoj3231 [SDOI2008]递归数列 矩乘

标准的矩乘模型,标准的数据范围注意构造矩阵的时候使用倍增转移法,这样清晰得多注:由于我的写法问题,前缀和算到n-1,所以要n++,而码:#include#include#includeusing namespace std;long long n,m,P,b[19],c[19],daan1,daan2,g[19],ans[19],dp[19][1

2018-01-03 17:48:50 201

原创 [SDOI2007] 单词接龙游戏 dp

这个题本来时限2s,但cogs上有一个点似乎有问题、、洛谷是1s,最后四个点卡人,特判才过、另外分析一下时间复杂度:总复杂度=l1*l2+l2*l3+l3*l4...即对每一长度相同的段乘比他短1的段的数量由正方形面积最大可知,和相等的情况下,两个数越接近,乘起来越大所以设一共有x个不同的段, 总复杂度=(10000/x)^2*x=10000*10000/x,所以x取1时最复杂为1

2018-01-03 14:37:05 464

原创 [SDOI2006]保安站岗 树dp

要记录三种状态:1、被子节点覆盖2、等待父节点覆盖3、建立覆盖节点然后转移就好了,有一点麻烦的就是被子节点覆盖,需要保证至少有一个子节点建立注:检查变量名与实际含义。码:#include#include#includeusing namespace std;int f[1505][4],k[1505],o,m,n,i,j,x,fu[1505];vect

2018-01-03 09:47:49 297

原创 [SDOI2006]二进制方程 并查集

apio也有一个用并查集统计方案数的题,但这个题是弱化版。。而且网上竟然一份题解都没有首先两个串能完全匹配,及说明相对应的两个位置有相等关系,在填0还是1的时候就只能填一次,所以就用并查集把相等的连到一起,统计答案时只统计fu【o】==o的部分串中的0和1单独处理,特判即可码:#include#include#includeusing namespace st

2018-01-03 07:13:40 468

原创 [SDOI2006]线性方程组 高斯消元

板子题,注意消元的时候无解判断和常数项的操作码:#include#include#includeusing namespace std;#define eps 1e-8int i,j,n,k,st;double x[105],a[105][105];int gauss(){ for(i=1;i<=n;i++) { for(j=1;j<=n;j++) {

2018-01-02 19:29:12 233

原创 [SDOI2005]动物园 匹配

一开始读错题以为动物不能停,,如果不能停的话就需要黑白染色原理、这个题只需要广搜最短路判断后直接dinic就可以了注:为保障程序兼容性。尽量用传统写法,如最短距离数组初始化为INF,而不是-1,不然判断会想当然出错码:#include#include#include#includeusing namespace std;int tot=-1,i,j,n,m,yuan[100005],ky

2018-01-02 16:09:25 278

原创 sdoi2015 位图+区间+矩形

都不难,往年tg难度

2018-01-01 20:23:28 234

空空如也

空空如也

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

TA关注的人

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