
bzoj
文章平均质量分 61
zz_ylolita
这个作者很懒,什么都没留下…
展开
-
Splay终极模板
写了各种Splay,以下这个版本最让我满意:)。。所以叫“终极”。。。风格飘逸,时间短,代码短也没有恶意缩行。融合各神犇之精华。46 437391(5) SpaceQ 1328 KB 136 MS C++ 1557 B 2013-06-19 23:05:14 非常满意。不加读入优化BZOJ46名。一会儿我试试读入优化的效果。加读入优化以后22 437435(6) SpaceQ转载 2015-04-04 20:51:41 · 1764 阅读 · 0 评论 -
bzoj1026: [SCOI2009]windy数-数位DP
问题描述windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?数位DP分成两步:求总共的DP和统计答案DP:dp[i][j]表示i位数字,最高位为j的windy数的个数dp[i][j]=sum(dp[i-1][k]) |j-k|>=2边界dp[1][j]=原创 2016-02-27 21:49:38 · 3121 阅读 · 0 评论 -
bzoj1500: [NOI2005]维修数列
splay鼻祖级的题目??(雾。。Insert:把第pos个数(有哨兵节点)转到root,把第pos+1个数转到root的右儿子,然后对c[]建树然后把这棵树插到root右儿子的左儿子处Delete:把第pos个数转到root,把第pos+tot+1个数转到root右儿子,删掉root右儿子的左儿子(变成0);注意回收空间,所以还要把这棵子树遍历一边。Make-Same:像上面原创 2016-02-04 18:32:48 · 573 阅读 · 0 评论 -
bzoj1036-树链剖分模板
剖分后的树有如下性质: 性质1:如果(v,u)为轻边,则siz[u] * 2 性质2:从根到某一点的路径上轻链、重链的个数都不大于logn。总之两个dfsdfs1(int x,int f) //f是x的父亲枚举和x相邻的点的时候注意不等于f 才可以递归 要维护的东西: dep[x] x节点深度 siz[x] 以x节点为根原创 2016-03-18 23:39:11 · 1384 阅读 · 0 评论 -
bzoj1070: [SCOI2007]修车-费用流
Description同一时刻有N位车主带着他们的爱车来到了汽车维修中心。维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的。现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小。 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间。Input第一行有两个m,n,表示技术人员数与顾客数。 接下来n行,每行m个整数。第i+原创 2016-03-16 19:12:24 · 1606 阅读 · 0 评论 -
1192: [HNOI2006]鬼谷子的钱袋
用二进制表示是最少的把m变成二进制,那么用m的二进制的位数那么多钱袋就可以了比如m=11010那么多个钱袋放1,10,100,1000.10000,最多可以达到11111所以这道题就是求m的二进制位数#include #include #include #include using namespace std;int n,m;int main(){ sca原创 2016-03-03 00:08:51 · 1433 阅读 · 1 评论 -
bzoj3670:NOI2014 动物园
#include #include #include #include using namespace std;#define L 1000010#define P 1000000007int n,m;char s[L];int next[L],num1[L];long long ans;void getnext(){ int j=0;next[1]=0;原创 2016-02-11 01:13:07 · 778 阅读 · 0 评论 -
bzoj1588[HNOI2002]营业额统计
好裸的题,好坑的数据= =详见讨论版#include #include #include #include using namespace std;#define MAXN 500010#define INF 0x7fffffffstruct node{ int ch[2],f,v;}tr[MAXN];int a,tmp,x1,x2,ans;int n,root,t原创 2016-02-03 12:42:51 · 1081 阅读 · 0 评论 -
bzoj1084: [SCOI2005]最大子矩阵-DP
现在已经能自然的想到分类讨论了。注意到m=1或者2,当m=1时,是普通的最大连续字段和,只不过是k个:设f[i][j]表示前i个数中取出j个矩形的最大和转移:选:f[i][j]=max{f[i1][j-1]+s[i]-s[i1-1]}不选:f[i][j]=max(f[i][j],f[i-1][j])复杂度O(n^2*K)当m=2时,设w[i][j][k]表示第一列选到第原创 2016-02-10 00:28:08 · 2023 阅读 · 1 评论 -
1010: [HNOI2008]玩具装箱toy
原来的DP式子:设f[i]为前i个玩具装箱的总费用f[i] = min{ f[j]+ (i-(j+1)+s[i]-s[j]-l)^2 }展开得令g[i]=i+s[i]h[j]=j+1+s[j]+lf[i] = min{ f[j]+(g[i]-h[j]) ^2} = min{f[j] + h[j] ^ 2 - 2 * g[i] *h[j] } + g[i] ^ 2设j1原创 2016-01-29 12:56:15 · 1608 阅读 · 0 评论 -
bzoj2456:mode
很神奇的一道题内存限制1M 只能开4个int找众数,用抵消的思想,如果相互能够抵消,无论之前的那个数是众数还是后面的数是众数,要抵消的部分是相同的。如果最后剩下的数 tot=0或者t不是出现次数最多的数,找到的那个数出现的次数就没有>n/2#include using namespace std;int n,x,t,tot;int main(){ scanf("%d",原创 2016-02-06 16:13:01 · 1473 阅读 · 2 评论 -
莫队算法
莫队算法是解决区间离线查询无修改的问题将询问(l,r)看成平面上的点,如果可以O(1)转移到(l,r-1) (l,r+1) (l+1,r) (l-1,r)的话就可以用莫队算法计算(l`,r`)的代价是|l-l`| + |r-r`|,也就是Manhattan距离用Manhattan最小生成树的顺序来计算询问。用分块代替Manhattan生成树,m个询问先按照在哪一块排序,在按照r排序原创 2016-01-24 16:56:29 · 1035 阅读 · 0 评论 -
BZOJ 4152: [AMPPZ2014]The Captain
本来可以考虑每两个点之间连一条边 O(n^2)但是如果两个点之间连了一条x的边,中间还有一个点,那么|x_i - x_a|+|x_a - x_i+1| = |x_i - x_i+1|可以只连i 到a的x的边和a到i+1的x的边y同理只连排序后的相邻的边用dijkstra 跑一遍最短路。稳定的时间复杂度O(nlogn) 可以过为什么不用spfa呢。。。因为时间复杂度不稳定,理论上原创 2016-01-01 22:42:17 · 1208 阅读 · 0 评论 -
bzoj1293【SCOI2009】生日礼物
想了很久都没有想到。。。看了hzw的题解恍然大悟居然只是枚举起始位置,然后要取这个位置之前(之后)与它最近的k种珠子的位置的最大值作为这一个起始位置的答案,最后这些答案取min找最近的珠子:因为题目中已知Ti的珠子位置按升序排序,所以用静态链表把每一种珠子存起来,这样是尾插法,遍历的时候从大到小。同时为了方便,也需要将所有坐标排序,和遍历的顺序一样从大到小枚举起始位置,这样找之前最近比较方原创 2015-08-24 22:09:14 · 1138 阅读 · 0 评论 -
bzoj1834 最大流+最小费用最大流
就当模板啦… 不过这题第二问的构图还是可以想一下的。。。 在残量网络中把原来的边全部加一遍,但是有费用w,容量无限大,一开始的边还是费用为0 新建一个源点s,s向1连一条边,容量为k,费用为0,保证这条边满流,就有最小费用了。program bzoj1834;type point=record s,t,cap,flow,o,w,next:longint;end;var p原创 2015-04-15 23:57:15 · 1077 阅读 · 0 评论 -
[AHOI2014]支线剧情(有上下界的费用流)
由于不想被认为三心二意不努力,所以最好这周把ahoi2014做完。。。 【故事背景】 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等。不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情。这些游戏往往 都有很多的支线剧情,现在JYY想花费最少的时间看完所有的支线剧情。 【问题描述】 JYY现在所玩的RPG游戏中,一共有N个剧情点,由1到N编号,第i个剧情点可以根据J原创 2015-04-06 23:51:27 · 3688 阅读 · 0 评论 -
[AHOI2014]骑士游戏
【故事背景】 长期的宅男生活中,JYY又挖掘出了一款RPG游戏。在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽。 【问题描述】 在这个游戏中,JYY一共有两种攻击方式,一种是普通攻击,一种是法术攻 击。两种攻击方式都会消耗JYY一些体力。采用普通攻击进攻怪兽并不能把怪兽彻底杀死,怪兽的尸体可以变出其他一些新的怪兽,注意一个怪兽可能经过若干次普通攻击后变回一个或原创 2015-04-06 17:58:57 · 1146 阅读 · 0 评论 -
bzoj1801 AHOI2009 chess
动态规划计数问题每行每列最多两个炮以每一行划分状态bzoj上不删掉system("pause");就无限RE #include #include #include #include #include #include using namespace std;#define P 9999973long long f[105][105][105];int n,m;l原创 2017-08-13 16:25:00 · 359 阅读 · 0 评论