上一页 1 2 3 4 5 6 7 8 ··· 16 下一页
摘要: http://codeforces.com/contest/509/problem/F 题意:给出DFS “先序”输出顺序,问有多少种树满足条件 思路:DP[i][j] 表示以 i 为根,i+1 ~ j 是 i 的子树的方案数目, 则有转移方程 DP[ i ][ j ] = DP[ i+1 ][ j 阅读全文
posted @ 2019-03-08 20:50 zhangxianlong 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 无聊做水题, 链接:http://codeforces.com/contest/1132/problem/F 题意:一个字符串一次可以消除 形如:xxxx 的子串,问最少消几次 思路:区间dp,注意左右相等的情况就好了。。。 代码: 阅读全文
posted @ 2019-03-07 19:42 zhangxianlong 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 题意,一个图,选一个子图,使得 v[i] 边权,a[i]点权思路:最小割经典模型,我们把边和源相连流量v[i],点和汇向连流量a[i],中间的依赖用inf相连,那么这样的图最小割的含义就是“不选的边和选了的点的和”,那么这个值最小答案自然最大, 就是答案了代码:#i... 阅读全文
posted @ 2018-12-01 14:08 zhangxianlong 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题意:一个数组,选一个连续区间[L,R] 使得 区间内相同的数 + 区间外a[i]=c的个数最多 思路:似乎可以o(n),这里提供一个O(nogn)的分治方法,这类只选一个区间的问题很容易想到分治法,难在如何合并左右区间,这里我们贪心合并即可(枚举L,R的相同的数取什么),维护一下 左右可并的每种a 阅读全文
posted @ 2018-12-01 13:30 zhangxianlong 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 题意: 一棵有根树,1e5,输出每个节点的一个查询,查询定义为:以这个节点为根的树任选两个节点 权值GCD 最大 若没有孩子,则为-1 思路: 群里看见bitset居然有find_first()和find_next(x)的操作,搜了一下抄了一个大佬的思路具体实现就是 暴力子树的因子,用bitset合 阅读全文
posted @ 2018-11-08 21:13 zhangxianlong 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 没积分了。。更新一下。。 http://codeforces.com/contest/86/problem/C AC自动机加DP经典题目, 题意:。。。 思路:构建AC自动机,在AC自动机上跑,这样通过构造可以保证满足条件。再次基础上DP计数,DP[ len ][ idx ][ fail ] len 阅读全文
posted @ 2018-09-17 17:03 zhangxianlong 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 链接:点击打开链接 题意:n个数,选子集乘积之和是完全平方数的子集个数 思路:首先题目中ai非常小,显然可以状态压缩因子把问题转化成异或和为0的方案数字。 在此基础上可以DP解决或者使用线性基 DP方法 用dp[i][j]表示i次插入时异或和为j的方案数,我们可以想到插入一个新数字就是 dp[i-1 阅读全文
posted @ 2017-12-07 01:19 zhangxianlong 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题意:一串无限长的0,有m个操作(m<2e5),在每个x后面加一个y,最后一次查询L--R的数字,(L,R<1e6) 思路:看起来非常复杂,实际上突破口在于L,R很小,虽然操作复杂,直接模拟会单次操作on,但是我们可以考虑一个一个字符构造,实际上就是一个递归的过程。具体方法可以大家尝试一个一个字符构 阅读全文
posted @ 2017-10-09 14:17 zhangxianlong 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 链接:点击打开链接题意:画直线分区域,问每画完一条线有几个区域思路:倒着做变成擦直线,合并区域或形成新区域。可以使用并查集来维护。启发:类似拆分的问题都可以倒过来离线变成合并的问题。代码:#include#define LL long long#define PB p... 阅读全文
posted @ 2017-10-03 22:56 zhangxianlong 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题意:巨毒。。实际上就是A,B都希望自己得到的最多。前一个人拿k个,下一个人能拿k or k+1 思路:倒着DP。。实际上两个人是同一种策略,那么其实一个dp数组就可以了。。从最后一步拿k个往回推,dp[i][j]表示取第i个时候拿走包含i的j个,转移方程dp[i][j]=sum[i+j-1]-su 阅读全文
posted @ 2017-09-20 00:13 zhangxianlong 阅读(71) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 16 下一页