上一页 1 2 3 4 5 6 7 8 9 10 ··· 30 下一页
摘要: Anton and School - 2 题解: 枚举每个左括号作为必选的。 那么方案数就应该是下面的 1 , 然后不断化简, 通过范德蒙恒等式 , 可以将其化为一个组合数。 代码: #include<bits/stdc++.h> using namespace std; #define Fopen 阅读全文
posted @ 2019-05-12 19:13 Schenker 阅读(180) 评论(0) 推荐(0) 编辑
摘要: Lipshitz Sequence 题解: 可以通过观察得到,对于任意一个区间来说, 只有相邻的2个点的差值才会是区间的最大值。 具体观察方法,可以用数学分析, 我是通过画图得到的。 那么基于上面的观察结果。 对于一次询问, 我们可以枚举右端点, 然后, 不断的把右端点往右边移动, 然后把新的值加进 阅读全文
posted @ 2019-05-12 17:10 Schenker 阅读(162) 评论(0) 推荐(0) 编辑
摘要: Three Statesy 题解: 以3个大陆为起点,都dfs一遍,求出该大陆到其他点的最小距离是多少, 然后枚举每个点作为3个大陆的路径交点。 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.t 阅读全文
posted @ 2019-05-12 13:03 Schenker 阅读(134) 评论(0) 推荐(0) 编辑
摘要: Super M 题解: 定义 dp[u][0] 为遍历完u中的所有节点, 但不回到u点的路径花费值。 定义 dp[u][1] 为遍历完u中的所有节点, 且要回到u点的路径花费值。 转移方程. dp[u][1] = sum(dp[v][1] + 2). dp[u][0] = max(dp[v][1] 阅读全文
posted @ 2019-05-11 15:26 Schenker 阅读(202) 评论(0) 推荐(0) 编辑
摘要: Friends and Subsequences 题解: 如果左端点来说, 那么对于a[i]来说是向上的一条折线, b[i]来说是向下的一条折线, 那么如果这2个折线求交点个数的话, 我们可以二分去求第一个 a[i] == b[i] 的地方, 求最后一个a[i] == b[i]的地方。 代码: #i 阅读全文
posted @ 2019-05-10 14:06 Schenker 阅读(195) 评论(0) 推荐(0) 编辑
摘要: Little Pony and Harmony Chest 题解: 因为 1 <= ai <= 30 所以 1 <= bi <= 58, 因为 59 和 1 等效, 所以不需要59。 [1, 58]只有16个质数,对于这16个质数去状压。 对于1->58的数,我们计算出每个数对于质数来说的状态,然后 阅读全文
posted @ 2019-05-08 23:14 Schenker 阅读(246) 评论(0) 推荐(0) 编辑
摘要: Ant colony 题解: 因为一个数是合法数,那么询问区间内的其他数都要是这个数的倍数,也就是这个区间内的gcd刚好是这个数。 对于这个区间的gcd来说,不能通过前后缀来算。 所以通过ST表来询问这个区间的gcd。 那么题目就变成了询问一个区间内有多少个k。 我们对于每个数都离散化之后,在相应的 阅读全文
posted @ 2019-05-08 22:08 Schenker 阅读(151) 评论(0) 推荐(0) 编辑
摘要: int Log[N]; struct ST { int dp[N][20], a[N]; void init(int n) { for(int i = -(Log[0]=-1); i < N; i++) Log[i] = Log[i - 1] + ((i & (i - 1)) == 0); for( 阅读全文
posted @ 2019-05-08 22:01 Schenker 阅读(108) 评论(0) 推荐(0) 编辑
摘要: Appleman and Tree 题解: 定义dp[u][1] 为以u的子树范围内,u这个点已经和某个黑点相连的方案数。 dp[u][0] 为在u的子树范围内, u这个点还未和某个黑点相连的方案数。 转移方程: 如果 u为黑点, dp[u][0] = 0, dp[u][1] = 1, 然后考虑从下 阅读全文
posted @ 2019-05-08 15:44 Schenker 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题意:求树上路径可修改的第k大值是多少。 题解:CDQ整体二分+树刨。 每一个位置上的数都会有一段持续区间 根据CDQ拆的思维,可以将这个数拆成出现的时间点和消失的时间点。 然后通过整体二分第k大思路 + 树炮询问路径上出现点的个数就好了。 说一下整体二分的思路。 先假设第k大的值是mi 阅读全文
posted @ 2019-05-03 17:08 Schenker 阅读(162) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 30 下一页