该文被密码保护。 阅读全文
摘要:
A 考虑从大到小考虑每一个取值的数,如果能换就换,如果换了没用就不换。 实现上使用 vector 存下标,复杂度 \(O(n)\)。 #include<bits/stdc++.h> using namespace std; int t,n,m,a[1000005],flag,tim; vector< 阅读全文
摘要:
here. C 考虑最终合法的字符串,形如: \[1,2,2,2,\cdots,2,2,2,3 \]然后考虑对于每对 \(1,3\) 对答案的贡献是,它们中间 \(2\) 的个数,记为 \(cnt\),\(2^{cnt}-1\)。 然后考虑从左往右扫,每次遇到 \(1\) 往 ds 里加入一个 \( 阅读全文
摘要:
here. E 考虑对 F 先删边再加边。 删边时,用并查集维护出 G 的联通性,如果 F 中的边 \((x,y)\) 在 G 中不联通,就把它删去。 加边时,用并查集维护出 F 的联通性,如果 G 中的边 \((x,y)\) 在 F 中不连通,就在 F 中加边 \((x,y)\)。 不难发现这样贪 阅读全文
摘要:
here. 感觉出的都很不错,做起来很舒服。 C 考虑直接 DP。 设 \(f_i,0/1\) 表示考虑前 \(i\) 个人,第 \(i\) 个人是否说谎的方案数。 枚举第 \(i\) 个人是否说谎,得到转移: \[f_{i,0}=f_{i-1,1} \]\[f_{i,1}=f_{i-1,0}[a_ 阅读全文
摘要:
here. C 考虑这样一种构造: \[1,2,3,\cdots,n-1,n,1,2,3,\cdots,n-1,n \]或者是: \[1,2,3,\cdots,n-2,n-1,n,1,2,3,\cdots,n-2,n-1 \]这里的 \(n\) 不是题面中的 \(n\)。 但是经检查,这种构造会在 阅读全文
摘要:
here. 困难场。 C 考虑贪心,我们在一个前缀只取正数,后缀只取负数,这样取一定可以取到最大值。 扫一遍记录前缀正数和和后缀负数和,枚举分割点即可。 复杂度 \(O(n)\)。 #include<bits/stdc++.h> #define int long long using namespa 阅读全文