bzoj
wzf_2000
这个作者很懒,什么都没留下…
展开
-
【bzoj3503】[Cqoi2014]和谐矩阵
根据第一行可以推出第nn行,然后以此列出异或方程。 然后就高斯消元解异或方程即可。#include <bits/stdc++.h>#define N 49#define eps 1e-7using namespace std;int n,m,ans[N][N],a[N][N],b[N];bitset<N> A[N][N],B[N];int main(){ scanf("%d%原创 2017-08-07 09:02:10 · 374 阅读 · 0 评论 -
【bzoj4373】算术天才⑨与等差数列
判断区间是否构成等差数列:极差=k*(len-1),差分gcd=k,没有相同的值。(还有一种,似乎是判断最小值,和,平方和,可能简单点)然后极差就是最小值跟最大值,跟差分gcd都比较容易维护。但坑的是没有相同的值的判定。(似乎有人没写过了?excuse me?)然后假装我们知道(维护)了一个值表示一个区间的数中上一个出现位置最晚的那个的位置(Mpre),就可以轻易用线段树轻松秒掉。原创 2017-08-04 09:07:29 · 293 阅读 · 0 评论 -
【bzoj2726】[SDOI2012]任务安排
首先暴力dp应该是很简单的dp[i]=min(dp[j]+cost[i]*(T[i]-T[j]+S)) (j>i)本来简单的斜率优化因为脑洞大的出题人一句时间可以是负的变成了cdq维护dp但比较好的一点是可以先把所有决策点加入凸包,在枚举询问(按斜率排序(T[pos]))在凸包上跑答案。#include #define gc getchar()#define N 50000原创 2017-08-04 08:57:01 · 509 阅读 · 0 评论 -
【bzoj2244】[SDOI2011]拦截导弹
这题就是个三维偏序。三维偏序就是排序一维,cdq一维,数据结构一维。然后尴尬的是还要求概率。也就是方案数。cdq正反各一遍,求三维偏序时,顺便dp记录方案数就好。#include #define gc getchar()#define N 50009#define mid (l+r>>1)#define ll long longusing namespace std;原创 2017-08-04 08:52:01 · 396 阅读 · 0 评论 -
【bzoj2149】拆迁队
似乎又是一道cdq维护dp这题首先要按照d[i]=a[i]-i的值分层dp。在cdq分治中,相当于前一层dp为修改,当前层为询问。考虑如何维护[l,mid]的修改对于[mid+1,r]的询问的影响。列出dp方程发现只要寻找最小值即可。然后就在维护的凸包上三分最小值的位置就好。#include #define gc getchar()#define N 120009#d原创 2017-08-04 08:48:40 · 432 阅读 · 0 评论 -
【bzoj1492】[NOI2007]货币兑换Cash
此题非常的经典(似乎cdq分治就是从这题引出的)基础思想就是cdq分治优化dp。网上题解似乎很多。。所以dp什么的就不写了。重点就是通过cdq来满足斜率优化的条件(维护凸包)#include #define gc getchar()#define N 100009#define mid (l+r>>1)#define eps 1e-7#define inf 1e10原创 2017-08-04 08:42:42 · 289 阅读 · 0 评论 -
【BZOJ2001】[Hnoi2010]City 城市建设
题意应该蛮简单的:修改边权,每次修改后询问MST边权和。思路:cdq分治+Kruskal每次将(l,r)修改的边权改为inf,删去没有在MST中的边。改为-inf,将在MST中且边权不为-inf的边连接的点缩点。(并查集)l==r做kruskal。这样做可以使边数,点数降到o(r-l+1)级别。时间复杂度o(nlogn^2)#include #define gc ge原创 2017-08-04 08:37:35 · 532 阅读 · 0 评论 -
【BZOJ4000】 [TJOI2015]棋盘
比较简单的矩阵快速幂优化dp#include #define gc getchar()#define ll unsigned int#define N 10#define M 6using namespace std;int n,m,p,k;ll a[3][N<<1],f[1<<M],Ans[1<<M],ans;struct Matrix{ ll a[1<<M][1<<M]原创 2017-08-04 08:30:55 · 378 阅读 · 0 评论 -
noi2015解题报告
D1T1:斯波离散化+并查集题不解释。#include #define ll long long#define gc getchar()#define pb push_back#define N 100009using namespace std;ll n,c[N],father[N];ll a[N],b[N];vector p;ll getfather(ll x){原创 2017-05-18 21:12:41 · 1011 阅读 · 0 评论 -
noi2016解题报告
D1T1: 首先转化成统计AA型字符串有几种。 st[i]表示从i位置开始的AA型字符串有几个,ed[i]表示到i结束的有几个。 ans=∑st[i]*ed[i-1] 然后枚举A的长度L(AA长度的一半),i=k*L,j=(k+1)*L 观察x=lcp(i,j)和y=lcs(i-1,j-1)发现只有当x+y>=L时存在长度为L的AA型,然后显然是连续的一段,算算从哪开始到哪结束,差分一下,原创 2017-05-21 19:38:23 · 1782 阅读 · 1 评论 -
noi2017解题报告(部分)
D1T1: 每30位压成一个int,然后压位线段树就可以过了。#include <bits/stdc++.h>#define gc getchar()#define N 4500009#define mid (l+r>>1)#define ll long longusing namespace std;const int Max=1<<30;int n,m,t1,t2,t3;str原创 2017-08-07 09:28:39 · 2424 阅读 · 0 评论 -
【BZOJ2733】[HNOI2012]永无乡
永无乡题解原创 2016-07-19 19:30:44 · 619 阅读 · 3 评论 -
【bzoj3637】Query on a tree VI
似乎是code chef上的题,不知为何bzoj也有。题意:每个节点有颜色,刚开始可能是白色,每次修改一个点的颜色,或者询问一个点所在同色连通块的大小此题考虑维护一个点只考虑其子树时,颜色为白色和黑色的连通块大小。显然需要树链剖分+树状数组然后询问就是跳到深度最小的跟它同色的祖先。修改也是同理。然后考虑怎么找到深度最小的同色祖先。每次判断所在重链是否全为它的颜色。若是,原创 2017-08-04 09:14:13 · 314 阅读 · 0 评论 -
【bzoj3641】货车运输
此题就是在基环树上的询问答案分为两部分,一部分是以询问限速开过的时间,一部分是以当前路的限速开过的段。考虑离线,每次讲限速小于当前询问的限速的路段权值修改。S->T如果在去环后在同一棵树上,就直接树链+树状数组。如果不在同一棵树上就取他们到根路径的权值和和环上两种走法的较小值作为答案。环上边另开树状数组即可(claris只去一条边变为一棵树的太神了)#include原创 2017-08-04 09:20:57 · 588 阅读 · 0 评论 -
【bzoj3349】[Zjoi2016]小星星
容斥+树形dp 枚举集合S,要求所有点只能和S中的点配对,可以多个点匹配一个点。f[x][y]表示x匹配的是y,以x为根的子树的方案数,转移很简单,稍微认真思考就知道。枚举集合S,要求所有点只能和S中的点配对,可以多个点匹配一个点。\\f[x][y]表示x匹配的是y,以x为根的子树的方案数,转移很简单,稍微认真思考就知道。#include <bits/stdc++.h>#define gc ge原创 2017-08-07 08:58:33 · 322 阅读 · 0 评论 -
【bzoj1834】[ZJOI2010]network 网络扩容
第一问显然的最大流 第二问在残余网络上对于每条原来的边再连一条容量为infinf,费用为C[i]C[i]的边。 然后建超级源点SS向11连容量为kk的边,nn向超级汇点TT连容量为kk的边(我有强迫症)。#include <bits/stdc++.h>#define gc getchar()#define ll long long#define mid (l+r>>1)#define N原创 2017-08-05 09:37:13 · 279 阅读 · 0 评论 -
【bzoj3144】[Hnoi2013]切糕
每个点(x,y,z)(x,y,z)向(x,y,z+1)(x,y,z+1)连一条容量为其代价的边 SS向(x,y,1)(x,y,1)连一条容量为infinf的边 (x,y,h+1)(x,y,h+1)向TT连一条容量为infinf的边 对于相邻的(x,y),(x′,y′)(x,y),(x',y'),连边(x,y,P)−>(x′,y′,P−D)(x,y,P)->(x',y',P-D),容量为infi原创 2017-08-05 09:32:01 · 235 阅读 · 0 评论 -
【bzoj2127】happiness
题解过长,于是丢lych_cys题解跑#include <bits/stdc++.h>#define gc getchar()#define ll long long#define mid (l+r>>1)#define N 109#define inf 0x3f3f3f3fusing namespace std;int n,m,a[N][N],b[N][N],sum;int num原创 2017-08-05 09:26:52 · 325 阅读 · 0 评论 -
【bzoj3996】[TJOI2015]线性代数
首先转化题目: 给你nn个物品,可以选或不选。 选第ii个物品需要c[i]c[i]的代价。 同时选第ii和第jj个物品获得b[i][j]b[i][j]的收益 问最大收益。 网络流建图: 考虑sum=∑ni=1∑nj=1b[i][j]sum=\sum_{i=1}^{n}\sum_{j=1}^{n}b[i][j] 剩下就变成了算代价最小(也就是最小割) 建点(i,j)(i,j)和ii,对原创 2017-08-05 09:23:35 · 331 阅读 · 0 评论 -
【bzoj1305】[CQOI2009]dance跳舞
这题比较显然的网络流 先考虑建图: 男生向他的镜像节点连一条容量为kk的边。 女生的镜像节点向她连一条容量为kk的边。 男生节点向每一个喜欢的女生连一条容量为11的边。 男生镜像向不喜欢的女生镜像连一条容量为11的边。 S向每个男生节点连一条容量待定的边。 每个女生节点向T连一条容量相同的边。 两种方法: 二分答案midmid,设置源汇连边容量为midmid,跑最大流,如果flow原创 2017-08-05 09:14:58 · 275 阅读 · 0 评论 -
【bzoj4566】[Haoi2016]找相同字符
典型的sa题。(可能可以sam?) 两串在中间加一个奇怪字符后连起来跑sa 从大到小枚举Height,统计它的贡献。然后每次统计完并查集合并。(应该可以链表搞,,然而我wa了,,还是改成并查集)#include <bits/stdc++.h>#define gc getchar()#define ll long long#define N 400009 using namespace s原创 2017-08-05 09:03:34 · 447 阅读 · 0 评论 -
【bzoj1195】[HNOI2006]最短母串
此题似乎是一个dp。。 dp[i][j]表示选了i这个集合的字符串,最后一个是j的最短字符串。 (字典序顺便搞定) 然后发现需要处理掉一串为另一串子串的情况,特判一些特殊情况(或者奇怪的姿势)就好了。。 这题很卡空间,请务必不要乱开数组。#include <bits/stdc++.h>#define gc getchar()using namespace std;int n,len[1原创 2017-08-05 08:58:13 · 411 阅读 · 0 评论 -
【bzoj3926】[Zjoi2015]诸神眷顾的幻想乡
首先一个串的不同子串和就是sam所有的st[i]-st[fail[i]]之和。 这题以每个叶子结点为根,dfs建立广义sam就好了。。(其实学过sam还是蛮简单的吧吧吧) (去年写的,代码似乎不忍直视?)#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#d原创 2017-08-05 08:53:23 · 357 阅读 · 0 评论 -
【bzoj4567】[Scoi2016]背单词
这道题发现显然是让后缀在前面,儿子较大的先放最优一个trie就解决问题。(但是我size一开始写错卡了n久)#include #define gc getchar()#define ll long long#define N 610009using namespace std;int n,b[N];ll Ans;char a[N];bool cmp(const int &x原创 2017-08-04 09:23:28 · 475 阅读 · 0 评论 -
【BZOJ4823】 [Cqoi2017]老C的方块
此题是构造好题。首先我们对体中的方块进行四染色:from sdfzyhx的博客然后我们发现每一个不好的四个方块都是Y->B->R->G然后分四层跑网络流dinic(记得中间2、3层不要赋值为inf,我挂在这好久)#include #define gc getchar()#define N 100009#define mp make_pair#define pb pu原创 2017-05-07 14:33:03 · 656 阅读 · 0 评论 -
【BZOJ4822】 [Cqoi2017]老C的任务
此题本来是一个很好的二维线段树模板题,然而居然卡空间(至少洛谷上是的)。以下是二维线段树写法(大概70分):#include #define gc getchar()#define N 100009#define M 16000009#define mp make_pair#define pb push_back#define sz(x) (int)x.size()#defi原创 2017-05-07 14:25:22 · 486 阅读 · 0 评论 -
【BZOJ4876】 [Zjoi2017]线段树
zjoi2017 day2T2原创 2017-05-07 14:20:57 · 766 阅读 · 0 评论 -
【BZOJ1150】[CTSC2007]数据备份Backup
题意:给定n个点的坐标,要求连k条边,每个点仅可连一条边,求最小距离和。优先队列维护相邻两点间的距离,每加一条边,将于这两点有关的三个值全删除(打标记),再将两边的值减去中间的值加入优先队列,用链表维护前后相邻的值。#include #include #include #include #include #include #include #define pa pair#d原创 2016-07-19 16:47:12 · 358 阅读 · 0 评论 -
【BZOJ1503】[NOI2004]郁闷的出纳员
0原创 2016-07-19 16:58:47 · 458 阅读 · 0 评论 -
【BZOJ3224】Tyvj1728普通平衡树
题意:写一种数据结构,来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求x的后继(后继定义为大于x,且最小的数)ps.题目题意很清楚明显可以看出是平衡树,我写的是splay,删原创 2016-07-20 14:31:10 · 408 阅读 · 0 评论 -
【BZOJ3223】Tyvj1729文艺平衡树
题意:写一种数据结构支持区间翻转。显然用平衡树,然而我第一次写翻转,居然调了半个下午!!!。。。坑爹的边界数据。。#include #include #include #include #include #include #define ll long long#define gc getchar()#define inf 1000000000#define N 2000原创 2016-07-20 16:30:40 · 290 阅读 · 0 评论 -
【BZOJ2049】[Sdoi2008]Cave洞穴勘测
题意:每次在两个点间连边或删边,询问两点是否连通。(lbn187大神不说完全没意识到是lct啊啊啊啊啊!!!)连边就是link,删边cut,判断联通就是看是不是在一棵辅助树上(就是两个点所在辅助树的总根是否相同。。find即可)第一次写lct,完全不会,写一个过程看会模板,没救了。。(不要问我up干什么吃的,其实我也不知道)#include #include #include原创 2016-07-20 19:52:51 · 307 阅读 · 0 评论 -
【BZOJ2843】极地旅行社
题意:连边,询问权值和,单点修改权值裸的不能再裸的lct模板题。。。话说我就贴了个刚写完的板,改了下输入,输出,数据范围都没看,居然就a了。。。。一点坑点都没有,要不要这样啊。。。#include#include#include#define N 200005using namespace std;int n,m;int read(){ int x=0,f=1; c原创 2016-07-20 20:23:45 · 700 阅读 · 0 评论 -
【BZOJ2219】数论之神
crt+指标+原根+bsgs原创 2016-12-05 20:41:15 · 399 阅读 · 0 评论 -
【BZOJ2242】[SDOI2011]计算器
题意:(题意好像很明显)思路:第一种ksm,第二种欧几里得拓展,第三种bsgs(其实就是模板题,然而第一次写bsgs)代码:#include #define gc getchar()#define ll long longusing namespace std;map mp;ll read(){ ll x=1; char ch; while (ch=gc,ch'9') i原创 2016-12-15 14:44:33 · 268 阅读 · 0 评论 -
【BZOJ1407】 [Noi2002]Savage
题意:略思路:从小到大枚举天数,两个人在同一处只有可能如下情况:某个同余方程(懒得写)有解且两个解都在寿命范围之内,然后如果任意两个人出现这种情况,就是会重合代码:#include #define gc getchar()#define N 20using namespace std;int n,c[N],p[N],t[N];int Max=0;int read(){原创 2016-12-15 14:50:54 · 243 阅读 · 0 评论 -
【BZOJ1014】[JSOI2008]火星人prefix
题意:给出一字符串,每次:1、询问从第x个和第y个字符开始的字符串的lcq2、修改某字符3、在某字符后插入一字符(可以在开头)思路:发现又插入操作之后应该就是平衡树了,所以想splay。。然后lcq改为判断型问题(二分长度)每个节点记录一下它和它子树构成字符串的hash值。每次二分时判断一发就好感觉代码量好大。。调了好久。。代码:#include #def原创 2016-12-15 14:53:28 · 246 阅读 · 0 评论 -
【BZOJ1046】 [HAOI2007]上升序列
题意:给出数列,每次询问求出长度为s且序号的字典序最小的上升序列思路:最坑的就是这种题不给spj先来一发lis,每个位置记录以此数为结尾的上升序列最短长度然后输出时,在剩余的数足够的情况下选最前面的代码:#include #define N 10009using namespace std;int n,m,a[N],Stack[N],top,x,now[N];void原创 2016-12-15 15:09:33 · 248 阅读 · 0 评论 -
【bzoj2301】 [HAOI2011]Problem b
题意:略显然可以转化为然后线性筛+分块搞定#include #define gc getchar()#define N 50009#define ll long longusing namespace std;int n,a,b,c,d,k,mu[N],pri[N],pd[N],cnt,sum[N];int read(){ int x=1; char原创 2017-01-13 20:43:17 · 228 阅读 · 0 评论 -
【BZOJ3631】[JLOI2014]松鼠的新家
题目大意:从编号1到n遍历图(中间经过点不算遍历过),求每个点经过了几次树剖,每次i到i+1都相当于一次链上修改,最后单点查询就行。#include #include #include #include #define N 300009#define inf 0x7fffff#define ll long longusing namespace std;int n,numb原创 2016-07-19 16:35:58 · 359 阅读 · 0 评论