08 2019 档案
摘要:题意:给定字符串S,A,B。现在让你对S进行切割,使得每个切割出来的部分在[A,B]范围内,问方案数。 思路:有方程,dp[i]=Σ dp[j] (S[j+1,i]在合法范围内)。 假设M和N的最长公共前缀为长度是LCP,那么字符串M>=字符串N的条件是 LCP=|N|或者(LCP<|N|&&M[l
阅读全文
摘要:题意:给定字符串S,然后M个字符串T。Q次询问,每次给出(L,R,l,r),问S[l,r]在L到R这些T字符串中,在哪个串出现最多,以及次数。 思路:把所有串建立SAM,然后可以通过倍增走到[l,r]在SAM上的位置p,然后在这个位置p上求,求的过程就是一个线段树求区间最值。 现在的关键是得到线段树
阅读全文
摘要:题意:给定字符串S; Q次询问,每次询问给出(L,R,T),让你在S[L,R]里面找一个字典序最小的子串,其字典序比T大。 没有则输出-1; 思路:比T字典序大,而且要求字典最小,显然就是在T的尾巴加一个很小的字符,如果不存在,则依次删去尾巴,直到“存在”。 而“存在”是指,前缀lim+一个字符‘x
阅读全文
摘要:题意:A班有N个人,B班有M个人,现在要组成一个新的班级C班,为了公平,从AB班各抽相同人数的人。 现在求所有方案中,人数之和是多少。 思路:即求Σ k*C(N,k)*C(M,k); 先忽略这个外层的k,看看两个组合数乘积的和怎么求。 显然Σ C(N,k)*C(M,k)=C(N+M,N); 因为C(
阅读全文
摘要:题意:有N个串,给出的形式是拼接给出,对于第i行: (1,c)表示字符串i是单个字母c; (2,p,c)表示字符串i=在字符串p后面接上一个字母c。 然后给出M个提问,形式是(i,string)。问string在字符串i中出现了多少次。 思路:这类题显然是在AC自动机上乱搞。 对于询问的串建立AC自
阅读全文
摘要:(7题弟弟。C题知道正解,懒得写了) A:^&^ HDU - 6702 题意:给出A,B。求一个最小的C,使得min=(A^C)&(B^C)最小。 思路:如果存在A和B都有的位,那么全选,就行了,这时结果min为0; 否则,选最小的那个,一个有,一个没有的那一位p,结果min=1<<p; #incl
阅读全文
摘要:题意:给定一棵树,带边权。然后Q次询问,每次给出(u,v),求这个路径上最小的未出现的边权。 思路:树上莫队,求mex可以用分块或者bitset,前者可能会快一点。 莫队过程:求出欧拉序,即记录dfs的in和out时间戳。 然后摊平成数组,在数组上进行莫队。 一般的莫队需要单独考虑LCA,因为LCA
阅读全文
摘要:A:deco的abs。 水题,先%,然后相邻两个数min()一下差值。 B:deco的gcd .给出数组a[],求两两gcd之积。 当然如果是两两gcd之和,就是司空见惯的反演了。 没做过的,可以参考: HDU - 4676 :Sum Of Gcd (莫队&区间gcd公式) CodeForces -
阅读全文
摘要:今天是被打爆的一天,T3就是用正解做的,但是好像zz了,只得了30分。 T1由于没判不合法的情况,也只有15分 果然是一个拿不到noip一等奖的人 毕竟noip都准备改名了? A:破碎的矩阵。 题意:给出N,M,表示有N*M的矩阵,然后给定每一行的异或和,每一列的异或和,求方案数。 思路:如果合法,
阅读全文
摘要:题意:给定数组a[],求区间个数,满足区间的数各不同,而且满足maxval-len<=K; 思路:一看就可以分治做,对于当前的区间,从max位置分治。 对于这一层,需要高效的统计答案,那么对短的一边开始统计。 (这个过程很像启发式的逆过程,所以叫做启发式分治 1,对于数不同,这个可以预处理前缀和后缀
阅读全文
摘要:链接:https://ac.nowcoder.com/acm/contest/926/D来源:牛客网 在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li和 ri,此外它的颜色为 ci。 给定m个查询,每个查询给定一个区间 [a,b],需要求出这个区间完全包含的线段中有多
阅读全文
摘要:A:hash 或者 map 或者trie。 #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=200010; map<vector<char>,in
阅读全文
摘要:A思路:排个序建立最短路树即可,可以双指针实现。 考察:贪心,构造。 B:显然最大值取决于a[],出现的最高位不同的那一位,假设有最高位的分到A组,不然分到B组,分组后,各取一个x,y,那么ans=min(x^y),这个可以字典树实现。 比较常规。 但是比赛的时候我以为字典树空间不够只能得80分。所
阅读全文
摘要:题意:求Σfi^m%p。 zoj上p是1e9+7,牛客是1e9; 对于这两个,分别有不同的做法。 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可。 后者mod=1e9,5才mod下没有二次剩余,所以不能这么做了。可以分解mod,然后利用循环节搞。 zoj: #include <bi
阅读全文
摘要:本题我只是个搬运工,主要是抢救补板子,所以自己就没写。https://blog.csdn.net/u013534123/article/details/78058997 题意: 大致题意是给你一个N*N的矩阵,然后告诉你阿诺德变换,即原来坐标为(x,y)的点变换一次后变成((x+y)%N,(x+2y
阅读全文
摘要:题意:给定p=1e9+7,A,B。 求一对X,Y,满足(X+Y)%P=A; 且(X*Y)%P=B; 思路:即,X^2-BX+CΞ0; 那么X=[B+-sqrt(B^2-4C)]/2; 全部部分都要在modP意义下,所以求一个x满足x^2%p=B^2-4C,这个用二次剩余求即可。 套了模板。
阅读全文
摘要:题意:给定N,M,然后给出M组信息(u,v,l,r),表示u到v有[l,r]范围的通行证有效。问有多少种通行证可以使得1和N连通。 思路:和bzoj魔法森林有点像,LCT维护最小生成树。 开始和队友在想维护连通性,而不是维护树,这样好像会很麻烦。 队友yy了一个算法:用线段树模拟并查集维护连通性。(
阅读全文
摘要:题意:给出N*M的01矩阵,求矩阵个数,满足矩阵内全是‘1’,,而且被至少一个’0‘围住。(假设边界外是‘0’。(N,M<3000) 思路:这类问题,一般解决就是两个方向: A:压缩一维,即枚举上下边界,然后复杂度O(N^3); B:广告牌问题,即枚举下边界s,那么久可以看成s为底的一些高楼,再高楼
阅读全文
摘要:题意:硬币购物一共有4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西,去了tot次。每次带di枚ci硬币,买si的价值的东西。请问每次有多少种付款方法。 思路:这么老的题,居然今天才做到...背包的复杂度是比较高的。 加上tot次询问会爆炸。能不能预处理,然后容斥得到答案呢? 先求一个完
阅读全文
摘要:题意:给定带点权的树,问多少个连通块,其乘积<=M; N<=2000,M<1e6; 思路:连通块-->分治; 由于普通的树DP在合并的时候复杂度会高一个M,所以用依赖背包来做。 (当然,由于体积分布是离散的,可能有些选手用map也可以过,这样避免了每次都for(i,1,M),取决于数据吧)。 那么现
阅读全文
摘要:题意:给出A数组,B数组,你可以对A和B分别进行重排列,使得C[i]=A[i]^B[i]的字典序最小。 思路:对于这类题,显然需要建立字典树,然后某种形式取分治,或者贪心。 假设现在有了两颗字典树A,B,显然尽量让同方向的先匹配。 而且同一棵树的左右两边相互不影响,所以可以直接贪:如果A树上出发左走
阅读全文
摘要:题意:给定无向图,Alice在A集合选一个点,Bob在B集合选一个点,CXK在全集里选择一个点。 然后问“三人到某一点集合打篮球的最小距离”的期望。 思路:做过一个裸题,就是给定三人位置,问去哪里集合距离代价最小。 那题就是三个点跑三次SPFA,就可以更新答案了。而此题有一个Cxk,非常的头疼,然而
阅读全文
摘要:题意:给定字符串Str,求出回文串集合为S,问S中的(a,b)满足a是b的子串的对数。 思路:开始和题解的思路差不多,维护当前后缀的每个串的最后出现位置,但是不知道怎么套“最小回文分割”,所以想到了树剖,但是树剖不好同时维护“最后出现的次数”,“查询左端点>=L”的位置数。 所以GG。 那么从图论的
阅读全文
摘要:题意:给定x0,x1,a,b,满足xi=a*xi-1+b*xi-2; 求xn,n<10^(10^6); 思路:10进制快速幂裸题。降幂来写好像也是可以的,但是循环节不是phi(mod),所以数学不好就还是用10进制快速幂吧。 10进制快速幂:复杂度O(n*log10*K^3); 复杂度也不低,所以要
阅读全文
摘要:题意:有N块地,每块地给出的宽和高,然后可以分批买,每次买的代价是所选择的地种最宽*最高。 问怎么买,使得代价和最小。 思路:显然,先去掉被包括的情况,即如果一个地的宽和高斗比另外一个小,那么久可以删去。 这样,我们得到一些的地宽递增,高递减; 然后得到方程: dp[i]=min(dp[j]+w[i
阅读全文