随笔分类 - ACM准备篇
摘要:二进制枚举 用n位二进制数表示一个集合的状态,全部为1表示全集,全部为0表示空集,比如集合{0, 1,2,3};那我就可以用数字0-15的来表示集合的各个子集,用二进制从右往左数的第i为表示集合中第i个元素的状态。 0,1,2,3 这里用整数表示集合 集合A,B相交:A&B(二进制的&运算就可以直接
阅读全文
摘要:一、生成1-n的排列 二、生成1-n中任意取m个数的排列(m <= n) 将上述代码的if(cur == n)改为if(cur == m)即可 三、生成可重集的排列 将数组p,按字典序输出各排列。这里需要考虑数组p的元素有可能会重合,所以用两个数字统计在a[0] - a[cur - 1]中出现的次数
阅读全文
摘要:问题描述:有n个棍子,棍子i的长度为ai。想要从中选出3个棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0. 限制条件: 3 ≤ n ≤ 100 1 ≤ ai ≤ 106 1.简单暴力:直接三重循环枚举,如果可行更新最优解 2.贪心: 先排序,从大到小区最长的三根,如果可以构
阅读全文
摘要:问题描述: 将写有数字的 n个纸片放入口袋中,你可以从口袋中抽取 4次纸片,每次记下纸片上的数字后都将其放回口袋中。如果这 4个数字的和是 m,就是你赢,否则就是你的朋友赢。你挑战了好几回,结果一次也没赢过,于是怒而撕破口袋,取出所有纸片,检查自己是否真的有赢的可能性。请你编写一个程序,判断当纸片上
阅读全文

浙公网安备 33010602011771号