思路讲解
主要就是一个stl的使用,思路就是查到了直接删而不是查到了加进一个东西里
AC代码
https://atcoder.jp/contests/abc385/tasks/abc385_d
1 |
|
心路历程(WA,TLE,MLE……)
https://atcoder.jp/contests/abc385/submissions/62232078
RE
总的来说就是要防御性编程,能先判断的不要后判断(像我是后判断的,这不好,有些情况会RE)
然后空什么的特殊情况一定也要判断,不要嫌麻烦。

主要就是一个stl的使用,思路就是查到了直接删而不是查到了加进一个东西里
https://atcoder.jp/contests/abc385/tasks/abc385_d
1 | #include <bits/stdc++.h> |
https://atcoder.jp/contests/abc385/submissions/62232078
RE
总的来说就是要防御性编程,能先判断的不要后判断(像我是后判断的,这不好,有些情况会RE)
然后空什么的特殊情况一定也要判断,不要嫌麻烦。

思路其实就是组合数生成惯用套路+深度控制
组合数生成其实就是从start开始,这样可以保证加入顺序都是从编号小的到编号大的,进而达到无视元素加入顺序的效果。
1 | void dfs(int dep,int start,ull sum){ |
当然,利用异或计算的性质,我们可以控制深度,枚举不选的,而不是枚举选的,以减少计算次数
1 | if(T>N-T){ |
AC
https://atcoder.jp/contests/abc386/submissions/62216769
1 | #include <bits/stdc++.h> |
如果红色块被涂黑了,所有被红线围住的块全部也要涂黑,所以说中间不能有一个白色的块

形式化的来说,B(x,y),那么不能有白块 ≤ x && ≤ y。
AC
https://atcoder.jp/contests/abc386/submissions/62215130
https://www.luogu.com.cn/record/200864278
1 | #include <bits/stdc++.h> |
如果出现样例结果评测机与本地结果不一致,大概率是空的情况处理有问题
还是要多防御性编程,不要相信lower_bound一定正确,避免其返回end()的情况
https://www.luogu.com.cn/article/5c0a5s3i

由上可知,只有让每行每列的和都为0才在所有情况下都有解。
所以说这种东西首先要确定在什么情况下是一定有解的,不能上来就做
https://codeforces.com/contest/2055/submission/303531727
1 | #include <iostream> |
我的总体思路就是把问题拆成3个背包,而且因为不同食物不会含有多种vitamin,所以背包之间不会有干扰。
然后枚举前两个背包的大小(第三个背包就是总背包-1-2),得出最优组合,输出答案即可
AC
https://atcoder.jp/contests/abc390/submissions/62196209
1 | #include <bits/stdc++.h> |