上一页 1 ··· 45 46 47 48 49 50 51 52 53 ··· 65 下一页
摘要: 容易发现通配符中间的部分可以任意匹配,会造成的无法匹配的仅仅是前后缀,前缀和后缀可以分别独立处理。如果字符串均有通配符,只需要按前/后缀长度排序然后暴力匹配就可以了。 问题在于存在无通配符的字符串。显然首先这些字符串需要相同。剩下的字符串只要都能与该字符串匹配即可。然后就不会了。想了半天去看题解…… 阅读全文
posted @ 2018-09-26 23:59 Gloid 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 设f[i]为i在子树内不与充电点连通的概率。则f[i]=(1-pi)·∏(1-qk+qk·f[k])。 然后从父亲更新答案。则f[i]=f[i]·(1-qfa+qfa*f[fa]/(1-qfa+qfa*f[i]))。 比较好想的dp。注意第二个式子可能会除0。 阅读全文
posted @ 2018-09-26 19:51 Gloid 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 可以发现每次都对后缀+1是不会劣的。考虑dp:设f[i][j]为前i个数一共+1了j次时包含第i个数的LIS长度。则f[i][j]=max(f[i][j-1],f[k][l]+1) (k<i,l<=j,a[i]+j>=a[k]+l)。容易发现这里是二维偏序,相当于查询(j,a[i]+j)左下部分的最 阅读全文
posted @ 2018-09-26 19:31 Gloid 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 之前听说过一种dp套dp的trick,大致是用另一个dp过程中用到的一些东西作为该dp的状态。这个题比较类似。 考虑求LIS时用到的单调队列。设f[S]为所选取集合为S的方案数,其中在单调队列内的标2不在的标1。转移时考虑选择一个数是否合法,这只需要保证LIS长度不超过k且所给数的相对顺序不变。 注 阅读全文
posted @ 2018-09-26 13:03 Gloid 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 对每个质因子分开计算再乘起来。使用类似生成函数的做法就很容易统计了。 阅读全文
posted @ 2018-09-25 18:50 Gloid 阅读(144) 评论(0) 推荐(0) 编辑
摘要: kruskal重构树本质就是给并查集显式建树来替代可持久化并查集。将边按困难度从小到大排序后建出该树,按dfs序建主席树即可。查询时跳到深度最浅的满足在该重要度下已被合并的点,在子树内查询第k大。 阅读全文
posted @ 2018-09-25 00:17 Gloid 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 最后翻为0和1本质相同,只考虑一种。显然每个硬币最多翻一次。考虑设xi,j表示i,j位置的硬币是否翻,那么很容易就可以列出异或方程组。变量和方程都有n2个,那么解是唯一的,就不用考虑怎样最小化了。然而暴力高斯消元肯定是不行的。 考虑将所有关于xi,k和xk,j的方程叠加,由于n是偶数,可以得到xi, 阅读全文
posted @ 2018-09-24 22:54 Gloid 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 如果只有一个人的话很容易想到最大流,正常桥连限流inf双向边,危桥连限流2双向边即可。现在有两个人,容易想到给两起点建超源两汇点建超汇,但这样没法保证两个人各自到达自己要去的目的地。于是再超源连一个人的起点和另一个人的终点跑一遍,两次都满流说明有解。证明脑(bu)补(hui)。 阅读全文
posted @ 2018-09-24 20:05 Gloid 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 容易发现的一点是如果确定了每一层有哪些点,树的形态就确定了。问题变为划分bfs序。 考虑怎样划分是合法的。同一层的点在bfs序中出现顺序与dfs序中相同。对于dfs序中相邻两点依次设为x和y,y至多在x的下一层。特殊的,根单独作为一层。 这些条件显然是必要的,考虑一种构造方案:对于某个点,如果其在d 阅读全文
posted @ 2018-09-24 17:29 Gloid 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 给a做一个前缀和,那么现在每次所查询的就是(sn-sk)/(bn+nd-(k+1)d)的最大值。这个式子可以看成是(bn+nd,sn)和((k+1)d,sk)所成直线的斜率。 脑补一条直线不断减小斜率,容易发现可能成为最大值的点一定在下凸壳上。并且凸壳上的点和该点间的斜率变化情况是一个凸函数。于是维 阅读全文
posted @ 2018-09-24 14:30 Gloid 阅读(134) 评论(0) 推荐(0) 编辑
上一页 1 ··· 45 46 47 48 49 50 51 52 53 ··· 65 下一页