摘要:
https://codeforces.com/contest/1350/problem/E 1.首先预处理出所有从一开始就可以变色的连通块,把点集加入队列中去。 2.然后做一个bfs,最短路的思路,把可以变色的连通块向四周“感染”。 3.d[][]数组记录一个被感染的时间。初始时,可以变色的连通块d 阅读全文
摘要:
https://atcoder.jp/contests/abc164/tasks/abc164_e 题意大概是有n个城市,m条无向边,初始状态下,位于1号城市,且初始有s个银币。从u点到v点需要花费a银币、b时间。在每个点可以花d时间去兑换c个银币,求从起点1到各个点需要的最短时间。 思路:很显然这 阅读全文
摘要:
https://ac.nowcoder.com/acm/contest/5278/G 题意很好理解。而且很容易发现树中同一深度的松鼠才会打架。 预处理出节点的深度和dfs序,然后枚举树的深度,同一深度的所有节点和根节点s去建虚树,每建好一次就从根节点s出发跑一次树型dp dp的转移方程比较好想,设当 阅读全文
摘要:
https://ac.nowcoder.com/acm/problem/205306 贪心和dp做不了,所以想到这是一个匹配问题。 建立源点s和汇点t,源点s连接一周的7天,容量为cnt*总天数/7,特判总天数%7有余数的情况。 一周的7天作为7个节点连接n个task,容量设定为inf。 n个tas 阅读全文
摘要:
设计状态dp[i][j]表示T串Ti到Tj(区间i,j)匹配到的个数 由于T串比S串小,所以在区间(m,n)可以插入的字符串是任意的。 转移方程 if s[i] = t[l],dp[l][r] = dp[l][r] + dp[l+1][r] if s[i] = t[r] ,dp[l][r] = dp 阅读全文
摘要:
https://codeforces.com/contest/1332/problem/E 题面说了一大堆,直接可以抽象为一个n*m的矩阵,每一个a[i][j]代表网格(i,j)的高度。你可以执行两种操作:1.给任意一个a[i][j]加上2.2.给两个相邻的格子都加1.现在给出n,m,l,r,问你n 阅读全文
摘要:
https://codeforces.com/contest/1324 树型dp,换根法。题目所给定的数据结构是树,随意选择一个结点作为root根,开始dfs搜索回溯,用一个cnt数组来记录以i为根的子树对答案的贡献,这里用回溯的办法,先搜索下去再回溯上来,那么cnt[i] = cnt[i] + m 阅读全文
摘要:
https://codeforces.com/contest/1332/problem/F 题中描述是一棵树,给出树上子图存在独立点集的定义:G‘为全图G的子图,G‘在存在点对(u,v),E(u,v)不存在。现求G中有多少个子图可以满足存在独立点集?求所有的方案数。 题目抽象为:在树中的子树中选出一 阅读全文
摘要:
一、简单定义 本质上仍然是一棵线段树,但它和普通线段树不同,其每个节点用来表示一个区间内元素出现的次数,可以理解为维护区间的值域。 二、应用 1.维护一段区间的数出现的次数,快速计算一段区间的数的出现次数。 2.快速找到第k大或第k小值。 缺点:只能离线操作,不能进行在线询问。 三、原理 例如,最初 阅读全文
摘要:
https://codeforces.com/contest/1330/problem/D 题目大意:给出一个限制 d 与模数 m ,求出可以构造出的满足条件的数组 a 的个数,需要满足以下条件: 1.数组 a 的长度大于等于 1 2.数组 a 严格递增 3.任意的ai <=d且>=1 4.对于数组 阅读全文