给定各有n个整数的四个数列,A,B,C,D。要从每个数列中各取1个数,使四个数的和为。求出这样的组合的个数,当一个数列中有多个相同的数字时,把他们作为不同的数字看待。
输入:n=6
A={-45, -41, -36, -36, 26, -32};
B={22 ,-27 ,53 ,30 ,-38 ,-54};
C={42 ,56 ,-37, 75, -10, -6};
D={-16 ,30...
分类:
其他好文 时间:
2015-04-30 18:25:11
阅读次数:
124
给你一组数 1 ~ N,问你能有几种分法,把他们分成2组,2组的和相等。
如果 sum(1 ~ n) 为奇数,直接输出0,负责的话 主要找到 和为 sum / 2的组数 再除以2就是结果
因为N 最大为39 如果单向搜索肯定超时,改成双向的就行了
/*
ID: 18906421
LANG: C++
PROG: subset
*/
#include
#include
#include
#inc...
分类:
其他好文 时间:
2015-04-16 19:56:57
阅读次数:
121
题意:给4个数组,从每个数组中选一个数,求出4个数和为0的方案数。
分析:暴力时间复杂度为N^3,肯定不行。所以考虑先把ab、cd的和分别求出来。-(a+b)=c+d即满足条件,求和复杂度为N*N。ab数组为-(a+b),cd数组为(c+d)。
从cd数组里找等于ab数组的即可。这里可以先给数组排序 ,然后用二分搜索找。复杂度为O(N*N*logN)。
#include
#include
#...
分类:
其他好文 时间:
2015-04-05 09:07:22
阅读次数:
128
1.题目描述:点击打开链接
2.解题思路:本题利用双向查找解决。双向查找一般用于求若干个数之和相加等于一个固定值的题目。一般方法是将n个数分为两部分:1~n/2和n/2+1到n,然后枚举出两部分的所有可能的结果,最后利用二分查找看第一部分的结果是否存在于第二部分中。本题也是让找一些数之和等于S,这个数还可以变成对应的阶乘数,由于阶乘的个数受到k的限制。因此可以利用dfs来枚举所有的情况。由于最后...
分类:
其他好文 时间:
2015-03-27 22:23:18
阅读次数:
149
双向搜索,同时从起点和终点开始搜索,当if(mark[s.sta][s.site][s.fl] == -1)时就代表从两端的搜索范围开始出现交叉点,即得到最小值。
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
...
分类:
其他好文 时间:
2014-11-30 16:56:43
阅读次数:
268
/*双向搜索感觉是个不错的技巧啊*/题目大意:有n的物品(n#include #include#include#include#includeusing namespace std;#define inf 500000000int a[2][32][70000];int nn[2][32];int....
分类:
其他好文 时间:
2014-11-16 22:59:01
阅读次数:
288
各有n个整数的四个数列A、B、C、D。要从每个数列中各取一个数,使四个数的和为0。求出这样组合的个数。输入n = 6A = { -45, -41, -36, -36, 26, -32 }B = { 22, -27, 53, 30, -38, -54 }C = { 42, 56, -37, -75, ...
分类:
其他好文 时间:
2014-10-29 12:47:28
阅读次数:
177
写到一半才发现可以用双向搜索4层来写,但已经不愿意改了,干脆暴搜+剪枝水过去算了。
想到一个很水的剪枝,h函数为 当前点到终点4个点的最短距离加起来除以2,因为最多一步走2格,然后在HDU上T了,又发现再搜索过程中,这个估价函数应该是递减的(贪心),再加上这个剪枝就过了。
#include
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2014-10-04 23:53:57
阅读次数:
262
视频压缩中,每帧代表一幅精巧的图像。而在实际压缩时,会採取各种算法降低数据的容量,当中IPB就是最常见的。简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。I帧表示关键帧,你能够理解为这一帧画面的完整保留;解码时仅仅须要本...
分类:
其他好文 时间:
2014-09-28 15:56:33
阅读次数:
211