摘要:
网上的题解大多树都要建一棵trie树,并在上面跑AC自动机,然而这里有一种同样需要trie树,但时间复杂度较低的方法。首先,我们可以轻松列出状态转移方程 F[x]=∑| F[x-len(i)]&(is(i->x,s[i]);这样的复杂度是O(m*lens*∑len[i]*n),可能会超时,再加上ha... 阅读全文
摘要:
此题时限10秒,顿时惊呆,想到一个n^5解法,果断去写。用f[i1][j1][i2][j2]表示从a矩阵的(i1,j1)和b矩阵的(i2,j2)开始哪一行有多少相同的。然后再枚举i1,i2,j1,j2然后判断有几行。 1 #include 2 #include 3 using namespace s... 阅读全文
摘要:
我们可以发现答案目标串即为某一个串的前缀,所以只要枚举前缀再计算两个串需要转移的距离即可这种题目不要老往dp上想,要善于利用题目条件 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 string a,b,c; ... 阅读全文
摘要:
这道题是我斜率优化第一题,对此做一个纪念。首先进行一遍筛选,然后动态规划表达式很快就写出来了f(i)=min(f(i)+b[j+1]*a[i])然后就要进行斜率优化了,显然这里边所有东西都是单调的,所以只需要维护单调队列即可。cal函数计算的是斜率,具体看代码吧(参考别人),以后要多加练习。 1 #... 阅读全文
摘要:
今天开始做网络流,只能说24题道道经典,虽然才做几道,做一道添一道吧第一题 飞行员配对方案问题 第二次世界大战时期, 英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员, 其中1 名是英国飞行员,另1名是外籍飞行员。在众多的飞... 阅读全文
摘要:
题目大意:有N(1 2 #include 3 using namespace std; 4 long long ans=0; 5 int T; 6 int n; 7 int main() 8 { 9 scanf("%d",&T);10 while(T--)11 {12 ... 阅读全文
摘要:
题目大意:有N(N<=1000)个贪婪的海盗,他们得到了100,000个金币,决定分赃。他们都很精明,都想自己利益最大化,并采取如下策略: 1、 首先N人排好次序。 2、 由编号最大者给出分赃方案。 3、 所有人表决,50%及以上的人赞成就分赃成功,否则转4。 4、 杀掉提案者(总人数少了1),转2... 阅读全文
摘要:
题目大意,现在要走过一条斑马线,斑马线是由n条交替的黑条和白条构成的,第一条是黑条。脚的长度是s。要求在走的过程中,他脚的任何一部分都不能碰到象征邪恶的黑条。第一条之前和第n条之后的部分都是白色的,可以任意选择第一条之前的位置出发。但出发位置一旦选定,之后每一步的长度都必须是k。请你判断有没有可能在... 阅读全文
摘要:
我看后缀数组,思想很容易懂,但是基数排序那边我确实理解了很久才理解,现在我写一份自己可以看懂的具体分析。第一步,首先将所有的位置上的值装入数组中,并记录排名为i的数为sa[i],第i个数的排名为rank[i].下面就要进行logn次的倍增操作,我们定义k为当前倍增长度基数排序,痛苦ing首先将每一对... 阅读全文
摘要:
题目大意:每组数据共有3行。 第一行有一个正整数n。 第二行有n个正整数A_1, A_2, ..., A_n表示置换A。 第三行有n个正整数B_1, B_2, ..., B_n表示排列B。判断能否达到B。n 2 #include 3 #include 4 #include 5 #includ... 阅读全文