随笔分类 - OI
摘要:题意:给定N组询问和D,初始时集合为空,每组询问先向集合的开头插入一个元素xi,然后给出一个数pi,求最小的yi使得\[{y}_{i}\left({p}_{i}+D\left(i-1 \right) \right)\geq {x}_{i}\] 题解:设Si=$\sum\limits_{j = 1}^
阅读全文
摘要:题意:给定两个字符串集合S T,每个集合内的所有字符串长度均相同,求有多少对字符串<Si,Tj>使得两个字符串拼接后,左右两半满足双旋转性质(一个字符串按照任意一个位置旋转后与另一个字符串重合) 题解:把较小的集合Hash后,暴力枚举另一个集合内的字符串。 #include <cstdio> #in
阅读全文
摘要:题意:设an=c1an-1+c2an-2+……+ckan-k,sn=a1+a2+……+an。给定a1到ak与c,求sn-sm-1 题解:以k=3为例\[\left( {\begin{array}{*{20}{c}}{{a_{n - 2}}}&{{a_{n - 1}}}&{{a_n}}&{{s_n}}
阅读全文
摘要:题意:给定一个空的数集,要求维护:1、区间求并 2、区间求交 3、区间求差 4、区间异或。每次操作后原区间变为操作后的区间,每个操作的区间可开可闭,求所有操作后的区间 题解:把每个点拆成开和闭两个,线段树维护就好。最后统计答案的时候暴力枚举每个位置即可 #include <cstdio> #incl
阅读全文
摘要:题意:给定6个长度为n的数列,求有多少个数对(i,j)((i,j)≡(j,i))使得i和j位置恰好有K个数相同,其中0≤K≤6 题解: 设fi=至少有K个数相同的位置对的数量,用2^6枚举每一种可能,根据容斥原理,答案就是\[\sum\limits_{i = K}^N {{f_i}C_i^K{{\l
阅读全文
摘要:题意:给定一个长度为2^N的序列和N个操作,每个操作i为将2^N分为2^(N-i+1)段,然后任意交换其中两段,求有多少种不同的交换方案使得序列升序 题解: 由于一个合法的方案中,交换操作的先后顺序,方案依然合法,所以我们只需要确定使用哪些操作。 按i的大小从小到大枚举每一个操作i,然后将序列分为2
阅读全文
摘要:题意:给定一棵树,求这棵树直径的长度和所有直径有多少个公共点。 题解:求直径感觉DFS比BFS好写太多,但是大数据本地爆栈OJ却不爆……思路和BFS版的差不多,第一问是个裸题。因为书中任意两点间有且仅有一条路径,所以所有直径的公共点一定是连续的一段。我们从左向右枚举直径上所有点,如果一个点到直径外一
阅读全文
摘要:题意:给定一棵树,求树上一条长度不大于S的路径,使得树上所有点到该路径的最大距离最小。 题解: 首先,所求路径一定在树的直径上,否则我们总可以用树的直径来扩展出更大的最大距离。 设fi为i为路径左端点时,直径的右端点到i的距离;gi为i为路径右端点时,直径的左端点到i的距离;hi为i的与直径没有交集
阅读全文
摘要:题意:给定一个N*M数字矩阵,求一个全1矩阵,使得该矩阵在经过复制后,在满足每次放置的位置不存在0的情况下,放置的矩阵数最少,求最少次数。 题解:由于数据很小所以可以暴力枚举所求矩阵的长和宽然后检验。由于所求矩阵的大小一定是所有数和的因数,然后矩阵越大放的次数就越少,所以倒序枚举。 #include
阅读全文
摘要:题意:给定一张有向图,边均由编号较大的点连向编号较小的点,每个点都有一个权值a,表示可以从任意一个点转移到i点,花费a[i]的费用。求遍历每个点一次且仅一次的最小费用,起点终点任意,保证有解。 题解:拆点,费用流决定经过的点的顺序,由于瞬移到i的费用与之前经过的点无关,所以可以直接从S向每个点i连流
阅读全文
摘要:题意:求1-N组成的长度为N的数列中,除了两端外,中间任意一个位置i均满足(ai-1<ai &&ai+1<ai)或(ai-1>ai && ai+1>ai)题解:考场上遇到这种题果断暴力设f[i][j]为1-i组成的数列,1-j其中一个为开头,且开头为山峰的方案数,转移分为两部分: f[i][j-1]
阅读全文
摘要:题意:给定两个点对和一张无向图,求两个点对的最短路中,重边边权和的最大值 题解: 首先从给出的四个点出发跑出到其他所有点的最短路,然后判断哪些边是重边。找出所有重边后,将其构有向图,在该图上用拓扑排序求最长路。 开始的时候枚举每一条边我没有建反向边,而是每次判定的时候互换一下边的始末点看是否合法,结
阅读全文
摘要:题意:给定一个颜色序列,每组询问给出区间[l,r],求[l,r]中不同颜色的数量 题解: 首先把所有颜色离散化,然后离线,将询问按右区间升序排列。从1-N把整个序列扫一遍,设Pos[i]为第i个颜色最后出现的位置,假定当前扫到的位置为i,则更新Pos[a[i]],那么问题变成了:求一个序列(Pos)
阅读全文
摘要:题意:求两个大正整数的GCD 题解: 出题人的愿意肯定是觉得SDOI不出大模拟说不过去,嘛,考场上这么出肯定没问题 不过BZOJ允许使用Python就是个错误…… a=(int)(input()) b=(int)(input()) while b!=0: t=a a=b b=t%b print(a)
阅读全文
摘要:题意:给定一张无向图,求A到B的路径中,经过的边数为T且不存在连续的两步经过同一条边的路径条数。 题解:没有第二个条件的话矩阵快速幂可做。有第二个条件我们可以边化点,然后虚拟两个节点S和T作为起点和终点,其中S与含A的边相连,T和含B的边相连,由于走到B需要额外的一步,因此求邻接矩阵的T+1次幂 #
阅读全文
摘要:题意:给定一个N*M的01矩阵,设li,j,ri,j,ui,j,di,j分别为(i,j)正上,正下,正左,正右1的数量,求$\sum\limits_{(i,j) \equiv 0} {C_{{l_{i,j}}}^KC_{{r_{i,j}}}^KC_{{u_{i,j}}}^KC_{{d_{i,j}}}
阅读全文
摘要:题意:有N个机器人护甲分别为ai,M个武器攻击力分别为bi/s,每个武器可以攻击的机器人不同,求摧毁所有机器人的最短时间,时间可以为小数 题解:实数上二分答案。好久没写网络流都不会开空间了…… #include <cmath> #include <cstdio> #include <cstring>
阅读全文
摘要:题意:有N个人M个房间,初始时所有人都在1号房间,维护:1、让某个人去某个房间 2、假如[l,r]中所有的人还未一起统计过,Ans+=人数。输出Ans 题解: 集合HASH get 根据异或的性质,a^x^x=a,因此一个集合的HASH值就是其所有元素的异或起来的值 接下来就是STL大法好 将每个房
阅读全文
摘要:题意:给定a b c d n m,fi,j满足f1,1=1 fi,j=afi,j-1+b fi,1=cfi-1,m+d,求fn,m%P 题解: a=1且c=1时\[{f_{n,m}} = 1 + b(m - 1)n + d(n - 1)\]否则\[\left( {\begin{array}{*{20
阅读全文
摘要:题意:给定一张图,求:1、最大流 2、最大流方案中,流量最大的一条边 题解: 第一问裸题 第二问显然Bob要把所有的费用加在流量最大的边上,因此我们二分最长边,每条边的流量改为min{二分出的最大流量,当前边的流量},跑最大流检验。 注意可以是实数流量,比如说: <1,2,3> <3,2,3> <2
阅读全文

浙公网安备 33010602011771号