合集-模拟赛
摘要:T1 思路:要使差和最小则应该排序序列,让相邻的两个对弈。用优先队列维护一下差值即可。 T2 思路:首先考虑什么时候不行,将相邻的相同的的字母去掉,对比第二个去掉*的序列是否相同。 那什么时候可以呢?就当第一个序列中其中一段有相同字母,此时第二个序列必须有*。 T3 思路:首先考虑拍p[i]<=1的
阅读全文
摘要:T1 思路:因为只有三个串故枚举其中一个为调换的串,再枚举k验证即可。 T2 思路:正着不好做,考虑反着做。这样就不会覆盖之前的。赛时没想到这个常见套路,正难则反。 T3 事实上只有一种情况,故只需倒着枚举遇到a统计答案。使用一个变量sum来记录遇到下一个a的次数 如果枚举到b,sum+=1。如果遇
阅读全文
摘要:T1 思路:Floyd板子 AC代码 #include <bits/stdc++.h> using namespace std; const int N = 110; int n,m,f[N][N],q; int main(){ freopen("count.in","r",stdin); freo
阅读全文
摘要:T1 思路:记字母对(l,r),考虑一个字母对(p,q),我们可以统计l在p的左边,r在p,q之间的字母对,也就是左端点l在p左边与该字母对交叉的个数,这样就不会算重。 从左到右扫描字符串,开两个树状数组,第一个以l为下标,第二个以r为下标,一个字母对(p,q)的答案即为第一个树状数组中[1--p
阅读全文
摘要:T1: 题意:石子合并板子就是改了一下 思路:优先队列,注意读题与开unsigned long long T2: 思路: 二分枚举ans,O(n)查询 dfs扫树,记录路径上最大wi即可,再排个序 AC代码1 #include <bits/stdc++.h> using namespace std;
阅读全文
摘要:T1 k <= 10,n <= 5e6 思路:首先我们可以观察到k的值很小,一共只有4k个状态即最大就只有220个状态,因此可以将这些状态存起来。 这里计算一个串的 Hash 值有两种方法,第一种是每个串都重新计算一遍,时间复杂度为O(nk),第二种是利用位运算将无用状态取出,并加入新状态,时间复杂
阅读全文

浙公网安备 33010602011771号