摘要: 想做出这道题需要三个技能点: 1,对于一个数x,x<<1为x的2倍,且在二进制视角看来,就是末尾多了一个0 2,题目说的k倍,k可以取特殊值,比如1,2 3,样例可能在扯淡有了以上三点前置知识,就可以开始构造了。 找到 xxxxxx xxxxxx0 或者 0xxxxxxxxx xxxxxxxxx 即 阅读全文
posted @ 2021-10-03 21:31 liyishui 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 因为只能修改一次 且每点的修改只能对左右产生影响 画出所有的折线情况 发现贡献只能是3 ,或者1 如果满足-3就-3,否则-1; 但一直wa,又找不着该逻辑的毛病,先放着发酵一会 #include<bits/stdc++.h> using namespace std; const int maxn= 阅读全文
posted @ 2021-10-03 19:48 liyishui 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 通过模拟发现让第一停可以得到987654321 让第二停可以得到 989012345 让第三停可以得到 9876 有一点比字典序的意思,要最大肯定最高位最大,模拟到3发现2最优了。 #include<bits/stdc++.h> using namespace std; int main( ) { 阅读全文
posted @ 2021-10-03 19:21 liyishui 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 谈谈心路历程: 模拟完样例后直觉挑出合法的最大和最小(不在一个包里) 让最小减去最大,然后如果最小所在的集合只有它自己的话,就可以开始疯狂堆了。 但样例2告诉我们可能最小所在的集合可能不只有自己,那么最小的小伙伴一定要被吃掉。 我们就要在剔除前面已经用过的两个数的情况下,再跑一次上述流程。 理论上是 阅读全文
posted @ 2021-10-03 19:18 liyishui 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 第一次做到这种神奇的题目 想了一个很复杂的组合数思路,大概就是枚举抽出多少个再放回去能满足条件,照着模拟这样 可是情况太多种了,以至于我想要个正难则反,就是枚举不满足的情况,发现情况也很多种 况且组合数本来就不会打,给我整不会了。 solution:证明了对于一个数列,假如它自己会被count到,那 阅读全文
posted @ 2021-10-03 10:50 liyishui 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 2的倍数只有log个 一个数要变成2的倍数除了在现有基础上,如果要加的话只能后面一股脑加 匹配的时候按着2的倍数一一去匹配,配不上就丢掉。(照题意) 也不知道wa在哪儿了,经典出思路but ac不了 20211005,过了,有个情况没考虑全,9没考虑。 阅读全文
posted @ 2021-10-03 09:45 liyishui 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 大意是给定一个字符串,每次从中挑一个字母删除该序列中的所有该字母,直到s为空 把每次得到的答案连接起来就是样例啦。 问能否找到一个顺序使得上述情况成立。 找规律ing: 最后一个出现的肯定是最后一次删除的 删除的次数肯定是字母的个数 最后一个出现的次数除以字母个数肯定是它在原序列里的出现次数 同理倒 阅读全文
posted @ 2021-10-03 09:42 liyishui 阅读(34) 评论(0) 推荐(0) 编辑