摘要: 题意: 给定两个字符串A,B求长度相同的AB子串,使得子串的前面部分相等,且第一个不相等的位置B>A。求这样的子串个数 场上把两个DP写反了,应该先求前面部分相等的种数,再对于后半部分的大于DP 思路:f[i][j]表示A的前i个字符与B的前j个字符能组成多少相等的子串。 若AB不相等,f[i][j 阅读全文
posted @ 2021-08-01 13:40 我是菜狗QAQ 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一张n*m的方格,起点在左上角,只能向下或向右走,地图中有k个地雷,人不能走到地雷上,问可能到达的点有多少。 很明显,这道题的数据很大,我们直接处理整张图肯定不行,而k很小,所以我们得从地雷入手,求哪些点走不到。 而因为我们的人只能向下向右,所以当一个点本身为地雷且(x-1,y+1)也有地 阅读全文
posted @ 2021-07-30 14:56 我是菜狗QAQ 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 这道题一开始觉得是DP,感觉比较难优化就暂时没想 然后附近有人搜索过了,想了一下搜索感觉可以A*,但是一开始估值函数太保守了,时间卡不过去。 赛后问了一下过的人,是将这条路径之后的最大和平均加到已有的上面来比较 下附代码: 1 #include<bits/stdc++.h> 2 #define ll 阅读全文
posted @ 2021-07-28 10:27 我是菜狗QAQ 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 当时看了眼题意,没怎么想这道题 题解比较简单,就说了求最大匹配,但是感觉实际上建图还是有点难想的 正解:这道题实际上就是拿最小的代价去满足行与列上的最大值要求,所以实际上下面给出的点里很多都是无所谓的,关键是那些行最大值等于列最大值的点,因为他们可以同时满足两个值,以此减少整体的总和。 因此,这道题 阅读全文
posted @ 2021-07-25 16:03 我是菜狗QAQ 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 这道题当时很快就发现了要取n+m-1个,以及和行列有关,只能说太久没打了,思维退化,没有关联到2分图后n+m个点取最小生成树 正解:根据上面想到的那两个性质,我们不妨把矩阵的行列分成二分图的两边点,然后将矩阵中的数作为边及边权,这样就构成了一张二分图,然后用最小生成树保证连通性,只要2分图联通,那么 阅读全文
posted @ 2021-07-25 14:00 我是菜狗QAQ 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 区间DP,训练的时候死活没搞清楚某一段区间的代价。 dp[l][r]表示消除[l,r]区间的最大得分,那么得分就是最后一个消除的点k*(l-1)*(r+1)。 所以dp[l][r]=max(dp[l][r],dp[l][k-1]+dp[k+1][r]+a[k]*a[l-1]*a[r+1]); 注意最 阅读全文
posted @ 2021-03-14 15:37 我是菜狗QAQ 阅读(129) 评论(0) 推荐(0) 编辑
摘要: A:昔我往矣 lca+dfs序,先做出所有点的dfs序,然后对于每一个询问,以dfs序最小和最大的为两个端点,然后往里面加点相当于加上一条分叉出去的链,用LCA求解即可。 下附代码: 1 #include<bits/stdc++.h> 2 #define ll long long 3 using n 阅读全文
posted @ 2021-02-13 15:27 我是菜狗QAQ 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 求n的数字重排且整除m的数(无前导0) 这道题我的写法挺鬼畜(用了一直想写却从未成功的11维动态数组) dp[x][st][……]表示前x位,原数位st,每种数字的个数为……的数。 这里注意一下,0-9一共10个数字,但是只要9维状态就行,因为剩下的可以用x和其他数表示,所以也是确定的,不用写进状态 阅读全文
posted @ 2021-02-05 13:28 我是菜狗QAQ 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 求l,r之间偶数位上都是d且原数整除m的数。 dp[x][sum]表示前x位原数是sum,转移的时候偶数位只转d,奇数位不转d就行。 下附代码: 1 #include <bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 co 阅读全文
posted @ 2021-02-05 13:24 我是菜狗QAQ 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 求l,r之间能被除0以外的自己的每一个数位整除的数。 这道题和之前有一道挺像,其实10以内的数质因子只有2357,所以看这四个的最大数量就行,同时最小公倍数是2520,所以原数可以对这个取模。 dp[x][st][c2][c3][c5][c7]表示前x位,原数st,2357最大数量为……. 下附代码 阅读全文
posted @ 2021-02-05 13:22 我是菜狗QAQ 阅读(81) 评论(0) 推荐(0) 编辑