随笔分类 - 折半枚举
摘要:有坑!!!当x==0时,因为y>0,a,b不能同时为0,所以答案要-1 #include<iostream> #include<cstdlib> #include<cstdio> #include<string> #include<vector> #include<deque> #include<q
阅读全文
摘要:来呀 题意:给n杯盐水,每一杯水有a单位盐,b单位水。给你一个x和y,问有多少种方法能配成x比y的盐水。 因为n只有35,没法枚举全部情况,如果n只有一般大,那么我们可以枚举所有情况。 我们可以把n分为两部分,枚举一部分的所有情况,然后找是否能和另一部分构成解。 对于(a1,b1)和(a2,b2)这
阅读全文
摘要:飞翔 题意:给你一个含有n(n<=1000)个数的数列,问这个数列中是否存在四个不同的数a,b,c,d,使a+b+c=d;若存在则输出最大的d 思路:子集最多有1000C4*4个,时限只有一秒。折半枚举有些讲究,以前折半都是在集合上折半,这次是在等式上。将等式变化为 a + b = d – c,预先
阅读全文
摘要:题目 题意:在一个集合中找到一个非空子集使得这个子集元素和的绝对值尽量小,和绝对值相同时保证元素个数尽量小 分析:1.二分枚举的思想,先分成两个集合; 2.枚举其中一个集合中所有的子集并且存到数组中,并排序; 3.枚举另一个集合中所有的子集并且与第一个集合中的合适子集相加(可以通过二分查找在数组中找
阅读全文
摘要:Description 有重量和价值分别为 wi ( 1 ≤ wi ≤ 1015 )、vi ( 1 ≤ vi ≤ 1015 ) 的 n (1 ≤ n ≤ 40 )个物品。从这些物品中挑选总重量不超过 C (1 ≤ C ≤ 1015)的物品,求所选挑选方案中价值总和的最大值。 有重量和价值分别为 wi
阅读全文