摘要:题目传送门 sol:先通过AC自动机构建字典,用$dp[i]$表示长串前$i$位的最小代价,若有一个单词$s$是长串的前$i$项的后缀,那么可以用$dp[i - len(s)] + val(s)$转移到$dp[i]$。 AC自动机 #include <bits/stdc++.h> using nam 阅读全文
posted @ 2020-01-23 12:39 Angel&Demon 阅读 (4) 评论 (0) 编辑
摘要:题目传送门 sol:二分答案$K$,算大于$K$的乘积有多少个。关键在于怎么算这个个数,官方题解上给出的复杂度是$O(nlogn)$,那么计算个数的复杂度是$O(n)$的。感觉写着有点困难,自己写了一个复杂度是$O(nlog^{2}n)$,也够AC了。有正有负,控制边界有点难度。 二分答案 #inc 阅读全文
posted @ 2020-01-21 12:19 Angel&Demon 阅读 (13) 评论 (0) 编辑
摘要:题目传送门 sol:根据题意建立流量网络然后跑网络流,这两天刚学的网络流,练练手。 网络最大流 #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII; const 阅读全文
posted @ 2020-01-16 17:18 Angel&Demon 阅读 (6) 评论 (0) 编辑
摘要:题目传送门 sol:题目的数据范围就是对解决方案的一种提示,原先以为当数据范围只有$20$的时候都是dfs或者二进制枚举这种,从这题了解到还有状压dp。不解释了,反正就是状压dp,做的不多,记录一下。 状压dp #include <bits/stdc++.h> using namespace std 阅读全文
posted @ 2020-01-13 16:43 Angel&Demon 阅读 (8) 评论 (0) 编辑
摘要:题目传送门 sol:每个下标都有选和不选两种情况,所以总方案数是$2^{n}$,在$n$最大是$100000$的情况下不符合要求。可以这样想,假设$i^{p}=k$有符合题目要求的解,还有一个整数$j$,$j$不是$i$的整次幂,$i$也不是$j$的整次幂,那么$j^{p}=k$不可能成立,所以我们 阅读全文
posted @ 2020-01-13 16:06 Angel&Demon 阅读 (17) 评论 (0) 编辑
摘要:题目传送门 sol:根据题意,可以把字符串截成两段,要求两段中最大的两个回文串相加最大的方案,于是跑马拉车维护一个前缀,再倒着跑马拉车维护后缀。因为最优方案肯定是在两个字母之间截,所以最后只考虑在'#'位置截断的情况 马拉车 #include <bits/stdc++.h> using namesp 阅读全文
posted @ 2020-01-12 12:28 Angel&Demon 阅读 (6) 评论 (0) 编辑
摘要:C++实验:STL之vector #include <bits/stdc++.h> using namespace std; void Input(vector<int>& v) { int n, m; scanf("%d", &n); for (int i = 1; i <= n; i++) { 阅读全文
posted @ 2019-12-30 10:08 Angel&Demon 阅读 (62) 评论 (0) 编辑
摘要:题目传送门 sol:在洛谷上看到一种dfs + 离线的方法,可以解决大部分可持久化问题。把依赖关系看成边,然后建树。这样本来要解决的多个版本只要在一个版本上进行修改就好了。 离线 + dfs #include <bits/stdc++.h> using namespace std; typedef 阅读全文
posted @ 2019-12-17 09:23 Angel&Demon 阅读 (8) 评论 (0) 编辑
该文被密码保护。
posted @ 2019-11-28 22:19 Angel&Demon 阅读 (21) 评论 (0) 编辑
摘要:A .Cake Cutting Problem 零AC,打扰了 B .Function des:f(x) = f(x-1) + 1. f(0) = k. 给出x、k,求f(x)。 sol:签到题,好翻译好做。直接两数相加没什么好说的。 数学 #include "bits/stdc++.h" usin 阅读全文
posted @ 2019-11-27 12:19 Angel&Demon 阅读 (37) 评论 (0) 编辑