题意:有一个N(N <= 35)个数的集合,每个数的绝对值小于等于1015,找一个非空子集,使该子集中所有元素的和的绝对值最小,若有多个,则输出个数最小的那个。 分析: 1、将集合中的元素分成两半,分别二进制枚举子集并记录子集所对应的和以及元素个数。 2、枚举其中一半,二分查找另一半,不断取最小值。 ...
分类:
其他好文 时间:
2017-03-10 00:29:05
阅读次数:
210
从四个数列选择的话共有n的4次方种情况。将它们对半分成ab和cd再考虑以快速解决。 从两个数列中选择只有n的2次方种情况,可以进行枚举。 从c和d中取数字的n的平方种方法全都枚举出来排好序。运用二分搜索从中搜索-a[i]-b[j]。复杂度O(n^2logn)。 #include<iostream> ...
分类:
其他好文 时间:
2017-03-04 18:29:28
阅读次数:
147
【什么是upper_bound 和 lower_bound】 简单来说lower_bound就是你给他一个非递减数列[first,last)和x,它给你返回非递减序列[first, last)中的第一个大于等于值x的位置。 而upper_bound就是你给他一个非递减数列[first,last)和x ...
分类:
编程语言 时间:
2016-12-12 14:31:10
阅读次数:
181
题目链接:http://poj.org/problem?id=3977 给你n个数,找到一个子集,使得这个子集的和的绝对值是最小的,如果有多种情况,输出子集个数最少的; n<=35,|a[i]|<=10e15 子集个数共有2^n个,所以不能全部枚举,但是可以分为两部分枚举; 枚举一半的所有情况,然后 ...
分类:
其他好文 时间:
2016-08-22 12:27:32
阅读次数:
99
Description The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d ) ∈ A ...
分类:
其他好文 时间:
2016-05-17 17:20:21
阅读次数:
171
题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1076 题目描述: 给出n个数,要求分成m段,问这m段中最大的总和,最小是多少? 解题思路: 二分每一段的长度,然后判定枚举长度是否合法。 刚看到这个题目就想到了dp,但是dp的 ...
分类:
其他好文 时间:
2016-04-20 21:39:03
阅读次数:
131
题意:有重量和价值分别为wi,vi的n个物品。从这些物品中挑选总重量不超过W的物品,求所有挑选方案中价值总和的最大值。
限制条件:
1
1
1
输入:
n = 4
w = {2, 1, 3, 2}
v = {3, 2, 4, 2}
W = 5
输出:
7(挑选0、1、3号物品)
分析:
这个问题是前面介绍过的背包问题,不过这次价值和重量都可以是非常大的数值,...
分类:
其他好文 时间:
2016-04-19 19:52:39
阅读次数:
142
题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1235 题目描述: 给出n个硬币,每种硬币最多使用两次,问能否组成K面值? 解题思路: 因为K草鸡大,尽管n很小,但是2^n很大,无法用背包做到O(nK)的复杂度。如果暴力枚举复 ...
分类:
其他好文 时间:
2016-04-18 22:26:51
阅读次数:
153
题目链接:http://poj.org/problem?id=2785 题意是给你4个数列.要从每个数列中各取一个数,使得四个数的sum为0,求出这样的组合的情况个数.其中一个数列有多个相同的数字时,把他们看作不同的数字. 做法是把前两个数列和的值存在一个数组(A)中 , 后两个数列的和存在...
分类:
其他好文 时间:
2015-11-10 19:28:51
阅读次数:
200
#include
#include
#include
#define LL long long
using namespace std;
int a[4][4005];
int b[2][4005*4005];
int main(){
int n;
while(cin >> n){
for(int i...
分类:
其他好文 时间:
2015-08-21 17:06:37
阅读次数:
121