Processing math: 0%

01 2018 档案

摘要:基数排序模板。。 至于用16进制乱搞的那个函数,背过好了。 阅读全文
posted @ 2018-01-23 08:32 zht467 阅读(166) 评论(0) 推荐(0) 编辑
摘要:传送门 直接暴力分块,然后在每一个块内排序。 查询时可以在每一个块内二分。 阅读全文
posted @ 2018-01-21 07:47 zht467 阅读(186) 评论(0) 推荐(0) 编辑
摘要:传送门 f[i][j]表示第一个机器耗时j,第二个机器耗时f[i][j] 第一维可以滚掉 阅读全文
posted @ 2018-01-20 07:16 zht467 阅读(128) 评论(0) 推荐(0) 编辑
摘要:传送门 f[i][j]表示位数为i,第i位为j的windy数的个数 先预处理出f数组。 求的时候先算没有前导0的答案,再算位数和给定的数相同的答案。 阅读全文
posted @ 2018-01-19 11:27 zht467 阅读(157) 评论(0) 推荐(0) 编辑
摘要:传送门 注意到只能在两边加人,有一种区间dp的感觉。 f[i][j][0/1]表示已经搞完区间[i,j]且上次搞的是左/右的方案数 那么他只能从f[i+1][j]或f[i][j-1]的某种状态得到,随便yy以下就知道状态转移方程了 阅读全文
posted @ 2018-01-19 10:15 zht467 阅读(169) 评论(0) 推荐(0) 编辑
摘要:传送门 贪心,很像田忌赛马那样,但是因为有平局加一分导致那样的贪心不好处理。 先将两个数组从小到大排序。 比较a最大和b最大,如果a比b大,那么直接赢掉 否则 比较a最小和b最小,如果a比b大,那么直接赢掉 否则 比较a最小和b最大,如果相等,那么平局,否则就输掉 阅读全文
posted @ 2018-01-18 20:48 zht467 阅读(146) 评论(0) 推荐(0) 编辑
摘要:传送门 一开始想的是区间线段树套权值线段树,结果好像不能实现。 然后题解是权值线段树套区间线段树。 区间线段树上标记永久化就省去了pushdown的操作减少常数。 标记永久化的话。。yy不出来就看代码吧。 然后注意开long long 阅读全文
posted @ 2018-01-18 19:55 zht467 阅读(103) 评论(0) 推荐(0) 编辑
摘要:传送门 看到这个题的第一反应是离散化+线段树乱搞。。 eeeeeeeeeeee感觉数据结构学傻了,其实直接存下来,sort一遍,n/2的位置的就是答案 当然前提是空间够的话 1m的空间连数组都开不下 于是有了一个很巧妙的思路,吼吧,直接给链接 http://blog.csdn.net/suncong 阅读全文
posted @ 2018-01-17 21:26 zht467 阅读(147) 评论(0) 推荐(0) 编辑
摘要:传送门 首先如果起点终点都在同一侧可以直接处理,如果需要过桥答案再加1 对于k等于1的情况 桥的坐标为x的话,a和b为起点和终点坐标 ans=\sum_{1}^{n} abs(a_{i}-x)+abs(b_{i}-x) 起点和终点显然可以合并 那么 $ans=\sum_{1}^{n} abs(a 阅读全文
posted @ 2018-01-17 18:33 zht467 阅读(266) 评论(0) 推荐(0) 编辑
摘要:传送门 题目中的几个操作,直接splay搞一下即可: 没了 阅读全文
posted @ 2018-01-17 18:24 zht467 阅读(229) 评论(0) 推荐(0) 编辑
摘要:传送门 两个multiset 一个记录相邻元素的差,一个放所有的元素 2个数组 val[i]记录第i个的值,last[i]记录第i个最后插入的数的值 然后乱搞 阅读全文
posted @ 2018-01-16 20:13 zht467 阅读(122) 评论(0) 推荐(0) 编辑
摘要:传送门 原本的想法是把所有的串不管是名字还是询问都连起来,记录一下询问串在sa数组中的位置 对于每个询问可以在sa数组中二分出左右边界,第一问用莫队,第二问差分乱搞。 结果发现我差分的思路想错了,先写了一个暴力,二分出左右边界之后直接从l枚举到r,想试试正确性,就交了一遍,结果过了。。。。 因为是暴 阅读全文
posted @ 2018-01-15 14:40 zht467 阅读(259) 评论(0) 推荐(0) 编辑
摘要:传送门 很容易想到,题目中的相同是指差分数组相同。 那么可以把差分数组连起来,中间加上一个没有出现过的且字典序小的数 双指针移动,用st表维护height数组中的最小值。 当然用单调队列应该也可以且更快。 阅读全文
posted @ 2018-01-15 08:45 zht467 阅读(211) 评论(0) 推荐(0) 编辑
摘要:传送门 显然树上第k大直接主席树 如果连边的话,我们重构小的那一棵,连到另一棵上。 说起来简单,调了我一晚上。 总的来说3个错误: 1.离散化写错位置写到了后面 2."="写成了"==" 3.加双向边时加成了单向边 3个错误3个小时。。。 阅读全文
posted @ 2018-01-11 21:39 zht467 阅读(170) 评论(0) 推荐(0) 编辑
摘要:传送门 简直就是模板题啊! 阅读全文
posted @ 2018-01-10 21:38 zht467 阅读(433) 评论(0) 推荐(0) 编辑
摘要:传送门 考虑贪心,控制某一维为1,另两位最大是最优的,也就是一次选一个厚度为1的面 那么对于每个点,可以有3种面是可以选到它的 然后gg 考虑二维的状态,一个平面,有些点,一次选一行或一列最优 那么每一个点i,j可以被行i和列j选中,将i->j连接一条边,每一条边就代表一个点 选取最少的点覆盖所有边 阅读全文
posted @ 2018-01-10 20:52 zht467 阅读(242) 评论(0) 推荐(0) 编辑
摘要:传送门 根据公式xjb推一下,然后就可以连边。 考虑到字典序最小,和匈牙利算法的实现过程,要倒序匹配。 阅读全文
posted @ 2018-01-10 18:46 zht467 阅读(197) 评论(0) 推荐(0) 编辑
摘要:传送门 每一行的1和每一列的1不管怎么换还是在同一行和同一列 目标状态中有n个1是不同行且不同列的 那么就是能否找出n个不同行不同列的1 就是每一行选一个不同列的1 如果矩阵中位置i,j为1,那么点i到点j连一条边 跑匈牙利即可 阅读全文
posted @ 2018-01-10 17:20 zht467 阅读(168) 评论(0) 推荐(0) 编辑
摘要:传送门 我们将每一个属性和物品连边,然后枚举从小到大属性跑匈牙利,直到找不到连边 阅读全文
posted @ 2018-01-10 10:39 zht467 阅读(129) 评论(0) 推荐(0) 编辑
摘要:传送门 f[i][j] 表示第i天,手中股票数为j的最优解 初始化 f[i][0]=0 0<=i<=n 4种方式转移 可以将 f[i-w-1][k]+k*asf[i-w-1][k]+k*bs 放到单调队列中 阅读全文
posted @ 2018-01-10 08:59 zht467 阅读(148) 评论(0) 推荐(0) 编辑
摘要:传送门 需要n*m的算法,考虑单调队列 可以预处理出来 a[i][j]表示以i,j为右下角的绿化带+花坛的和 b[i][j]表示以i,j为右下角的花坛的和 那么我们可以单调队列跑出来在A-C-1,B-D-1的矩阵中的b[i][j]的最小值 枚举i,j,用取a[i][j]-ans[i-1][j-1]的 阅读全文
posted @ 2018-01-09 21:03 zht467 阅读(196) 评论(0) 推荐(0) 编辑
摘要:传送门 设球心的坐标为未知量 用最后一个点来表示球面到球心的距离,那么它和前n个式子相等 移项乱搞 最后高斯消元 阅读全文
posted @ 2018-01-09 16:44 zht467 阅读(113) 评论(0) 推荐(0) 编辑
摘要:传送门 好难的网络流啊,建图真的超难。 如果不告诉我是网络流的话,我估计就会写dfs了。 使用费用流解决本题,设点 p[i][j] 的参与交换的次数上限为 v[i][j] ,以下为建图方式: 将一个点分成三个点,分别为入点,原点和出点。 如果开始的图上该位置有棋子,那么从S到该点的原点连一条 阅读全文
posted @ 2018-01-09 09:03 zht467 阅读(133) 评论(0) 推荐(0) 编辑
摘要:传送门 网络流的建图真的好难! 将一个点拆分成多个点的思想还需要加强。 题解 代码和题解中的图略不一样。 阅读全文
posted @ 2018-01-09 08:05 zht467 阅读(114) 评论(0) 推荐(0) 编辑
摘要:传送门 结论:这是最大权闭合图的模型 因为可能A保护B,B保护A,出现环。 所以由植物A向植物A保护的植物连边,然后拓扑排序,将环去掉。 然后将拓扑排序的边反向连,建立最大权闭合图的模型。 跑最大流(最小割),用正权边之和-最小割即为答案 阅读全文
posted @ 2018-01-09 06:20 zht467 阅读(154) 评论(0) 推荐(0) 编辑
摘要:传送门 dp[i][0]表示节点i到子树中的所有点的距离之和 dp[i][1]表示节点i到子树中最近距离的点的距离 dp[i][2]表示节点i到子树中最远距离的点的距离 建好虚树后dp即可。 因为对于虚树掌握的还不是很熟,有些细节还是要注意。 虚树中可能会加入一些lca节点,这些节点在d 阅读全文
posted @ 2018-01-08 19:08 zht467 阅读(110) 评论(0) 推荐(0) 编辑
摘要:传送门 明显虚树。 别的题解里都是这样说的。 先不考虑虚树,假设只有一组询问,该如何dp? f[u]表示把子树u中所有的有资源的节点都切掉的最优解 如果节点u需要切掉了话,f[u]=val[u] 否则如果u的子树中有需要切除的点的话,$f[u] = min(val[u], \sum\limits 阅读全文
posted @ 2018-01-08 16:53 zht467 阅读(132) 评论(0) 推荐(1) 编辑
摘要:传送门 显然是一棵树。 又显然一段一段地增加比较优。 我们可以dfs,并且尽量把每一个节点所有子树中所有节点的时间增加到一样。 阅读全文
posted @ 2018-01-07 14:51 zht467 阅读(127) 评论(0) 推荐(0) 编辑
摘要:传送门 为了搞这个题又是学行列式,又是学基尔霍夫矩阵。 矩阵树定理 本题题解 无耻地直接发链接,反正我也是抄的题解。。 阅读全文
posted @ 2018-01-07 09:48 zht467 阅读(210) 评论(0) 推荐(0) 编辑
摘要:传送门 考虑每一段对答案的贡献 用每一段的左端点来表示当前这一段,那么区间就变成了[1,n-1] 如果询问区间[l,r],其中一个点的位置为x,则它对答案的贡献为(x-l)*(r-x)*s[x](s[x]为这一段的权值) 化简后得x*s[x]*(l+r-1)-s[x]*(l*r-r)-x*x*s[x 阅读全文
posted @ 2018-01-06 17:03 zht467 阅读(131) 评论(0) 推荐(0) 编辑
摘要:传送门 不会莫比乌斯反演,不会递推。 但是我会看题解。 先将区间[L,H]变成(L-1,H],这样方便处理 然后求这个区间内gcd为k的方案数 就是求区间((L-1)/k,H/k]中gcd为1的方案数 有个重要的性质:如果有一些不相同的数,最大的为a,最小的为b,任意选取其中的一些数,则他们的gcd 阅读全文
posted @ 2018-01-06 09:52 zht467 阅读(254) 评论(1) 推荐(0) 编辑
摘要:传送门 gtm的数位dp! 看到好多题解,都是记忆化搜索,好像非常方便啊,但是我还是用递推好了,毕竟还是有些类似数位dp的题用递推的思路,记忆化做不了,现在多培养一下思路 首先这道题, 只看长度大于等于2的回文串,那么只需要看aa和aba两种即可,再长的话肯定会包括这两种情况。 定义状态:f[i][ 阅读全文
posted @ 2018-01-05 17:31 zht467 阅读(296) 评论(0) 推荐(1) 编辑
摘要:传送门 如果能够根据题意看出这是一个堆的话,那么就有些思路了。。 首先堆顶必须是最小元素,然后左右儿子可以预处理出来都有多少个数, 把剩余的数任意分配给两个儿子,用排列组合即可 dp(now) = dp(now << 1) * dp(now << 1 | 1) * C(sum[now] - 1, s 阅读全文
posted @ 2018-01-05 07:40 zht467 阅读(124) 评论(0) 推荐(0) 编辑
摘要:传送门 重新学习数位DP。。 有一个思路,枚举全排列,然后看看比当前数小的有多少个 当然肯定是不行的啦 但是我们可以用排列组合的知识求出全排列的个数 考虑数位dp 套用数位dp的方法,枚举每一位,然后后面的数用排列组合求出方案数。 具体还是看代码吧。。说起来真不好说。。 阅读全文
posted @ 2018-01-04 20:03 zht467 阅读(121) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示