摘要:
思路: 将输入的字符串转换成字典序最小的表示形式,存入set去重。用字典序最大的形式表示也是一样的; 最小表示法 Accepted 2609 62MS 3296K 804 B G++ #include "bits/stdc++.h" using namespace std; char s[205]; 阅读全文
摘要:
题意: 输入n和m,求n!转换成m进制之后末尾有多少个0; 思路: 转换一下题意就可以看成,将n表示成x * (m ^ y),求y的最大值。^表示次方而不是异或; 这就比较好想了,将m分解质因数,对于每个质因数,设n!含有a个,m含有b个,则ans = min(ans, a / b); 自己比赛的时 阅读全文
摘要:
欧拉函数 Accepted 2588 15MS 1372K 916 B G++ #include "bits/stdc++.h" using namespace std; int euler(int n) { int ans = n; for (int i = 2; i * i <= n; i++) 阅读全文
摘要:
这题是AC自动机的模板题,AC自动机是结合了字典树,和KMP两种算法产生的,去年为了学习AC自动机去看了前面说的两种算法,但是可能因为KMP当时理解的不够透彻所以这题当时也只是半背代码的做出来了,没多久就忘了。经过那么久的学习感觉KMP掌握的差不多了,今天回顾了一下AC自动机,并记录一下模板 AC自 阅读全文
摘要:
题意: 输入q,然后输入q个a,对于每个a,找到一个b,使gcd(a ^ b, a & b)最大,输出这个最大的gcd; 思路: 用k表示a二进制最高位的二进制编号,1,2,4,8对应1,2,3,4; 假如a不是 (1 << k) - 1这种形式的,那么总能找到一个b使a ^ b == (1 << 阅读全文
摘要:
前两天过年,所以两天前的比赛题目现在才来回顾。 这题是一个最平常的递归,加一个剪枝。题目说如果一段距离没有复仇者看守,消耗的能量为A,A一定是正整数。由此可知对于没有复仇者看守的段,不拆一定比拆成两半划得来。只有当这段距离有复仇者看守时,才比较拆开来划算还是不拆划算; 复仇者最多只有1e5个,所以不 阅读全文
摘要:
首先,对于这题我们要知道要删除一个数使平均值最大一定是删除最小的数,然后我们假设删除操作执行了i次,也就是删除最小的i个数。在已知删除操作次数之后求增加操作的次数就容易了,当然是m - i和k * (n - i)中比较小的数啦。用一个ans变量记录结果,遍历i,更新ans,得到最终的ans。 B - 阅读全文
摘要:
首先我们来求第m次移动的盘子号数,先列出当m比较小可以直接观察的前几项 m : 1、2、3、4、5、6、7、8、9、10 id : 1、2、1、3、1、2、1、4、1、2 很容易联想到树状数组的lowbit,这题的id就是lowbit(m)在二进制中的编号。 for (id = 1; (m & 1) 阅读全文
摘要:
可以用贪心求最小讲课次数,贪心策略也很好想,就是对于任意主题,能早讲就早讲。这种方案的讲课次数一定是最少的,但是不满意指标不一定是最小,然后再利用动态规划求在最少讲课次数前提下的最小不满意指标。 方法一(自己想到的) Accepted 1183 C++11 1020 4240 #include "b 阅读全文
摘要:
时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 杂货店出售一种由N(3<=N<=12)种不同颜色的颜料,每种一瓶(50ML),组成的颜料套装。 你现在需要使用这N种颜料;不但如此,你还需要一定数量的灰色颜料。 杂货店从来不出售灰色颜料——也就是它不属于这N种之一。幸运的是 阅读全文