摘要: 先找出Elaxia的最短路 重新建图 在此图上我们再标记同时也是w 的最短路的边 显然这是一个DAG 可以做dp 设f[i]表示以i点结尾的最长公共连续和(公共路径一定是一条链) 则f[vis]=max(f[now],f[now]+e[u].val e[u].flag)(flag表示是否也是w 的最 阅读全文
posted @ 2018-11-01 20:48 Patrickpwq 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 容易想到枚举所有起点 做最短路 然后枚举边统计次数 一条边(x,y)的贡献 肯定是 s到x最短路的方案数 乘上 s到其他点但经过了y的最短路 对于前者 每个点可以从前一个点递推过来 只要满足dis[vis]==dis[now]+edge[u].val 当一个点被所有入边都统计了一次后 就可以搜他了( 阅读全文
posted @ 2018-11-01 16:09 Patrickpwq 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 迭代加深搜索就是限制递归的层数,然后一层层地扩大限制的层数 我们记录当前深度,以及当前应该搜出几个数 设计剪枝: 1.当当前深度乘上2^r(r是还没有选的数)比m还小 那肯定是不行的 因为最大的扩展方式就是选两个最大的数 2.这一层比上一层数小 阅读全文
posted @ 2018-11-01 14:32 Patrickpwq 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 当答案可以分为两半时 为了降低复杂度 可以使用折半搜索 对前半部分 搜出所有可能的和 用map记录 对后半部分 同样也是搜出可能的和 如果前半部分存在一个和 能拼起来 那ans++ cpp include define N 45 define ll long long using namespace 阅读全文
posted @ 2018-11-01 13:36 Patrickpwq 阅读(212) 评论(0) 推荐(0) 编辑
摘要: n个集合的容斥其实就是 总的 减去两两相交的 加上三个相交 减去四个相交 加上五个.....(奇加偶减) 这道题就是一个lcm的容斥 我们用搜索来实现 枚举选的数 需要加个剪枝 当前lcm已经超过了m cpp include define N 35 define int long long usin 阅读全文
posted @ 2018-11-01 12:16 Patrickpwq 阅读(145) 评论(0) 推荐(0) 编辑