思路讲解
这句话可以好好琢磨一下


我先根据题解的这句话写一写
AC代码
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=75129359
1 |
|
心路历程(WA,TLE,MLE……)
1 | 1 |
以下程序没有处理一列中有多个重复元素的情况
1 |
|
这句话可以好好琢磨一下


我先根据题解的这句话写一写
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=75129359
1 | #include <bits/stdc++.h> |
1 | 1 |
以下程序没有处理一列中有多个重复元素的情况
1 | #include <bits/stdc++.h> |
P2880 [USACO07JAN] Balanced Lineup G
树状数组做RMQ问题
我的思路是肯定要预处理这个东西,然后重量加减应该没那么复杂,就是加在第一块上就行
然后我们其实就是要求需要加了多少嘛
我们可以把这个问题转化为RMQ,即该区间内最大的A[i]-sumA[i-1];
query的时候这样输出就行
1 | cout<<max(query(l+1,r)+sumA[l-1],0LL)<<'\n'; |
AC
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=75111878
1 | #include <bits/stdc++.h> |
WA
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=75111646
1 | for(int i=1;i<lowbit(p);i<<=1) { |
i<lowbit(p),你想lowbit(p)就是其表示区间的长度

这是判断字符串可爱度的代码(也就是这场的D题),可以发现我们发现要尽量让一个字母倒数第二次出现位置尽可能小,第二次出现位置尽可能大,才有可能使字符串“可爱度”尽可能小(当然,如果该字符没有出现或只出现一次,那自然不会对可爱度有贡献)
我们先来证明一下这个无解条件
1 | if(N-26>M) {cout<<"NO\n";return;} |
所以说字符串长度>26,可爱度必然不可能=0
参考题解
https://blog.nowcoder.net/n/906fd00ff386438b9d63013a3760e73a

通过取模让各个字符之间的距离保持在N-M+1(a……a的长度为N-M+1)
1 | void solve(){ |
AC
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=75110195
1 | #include <bits/stdc++.h> |
https://blog.csdn.net/lymww/article/details/122566800
bfs路径还原可以用bfs生成树(也就是树)的性质,即每个节点只有唯一的父节点这一性质进行还原,具体就是在bfs搜索过程中记录节点的父节点
那么这道题就是bfs找到最近的1,然后路径还原就行
AC
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=75103248
1 | #include <bits/stdc++.h> |
这个蓝注释的地方就是原来有错的地方,这种只有同时更新(用tie,或者其他才行)
否则先更新了o,后面p的结果就不对了

还有什么out忘记清空什么的,这就不多说了
说是双指针,但是实际上是用双指针求出一个最长的好区间(同起点中),然后运用一些其他方法求出该最长双生数组中包含几个双生数组(用的是下面的前缀和)

这个问题转化还是很厉害的
所谓的好区间就是只有两种数的区间
至于题解讲的什么区间重叠问题好像无所谓?反正以我的统计方法,两区间统计出来的答案不会有重叠。
AC
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=74994669
1 | #include <bits/stdc++.h> |