题目的本意是求LCS,但由于每个序列的元素各不相同,所以将A序列重新编号{1,2,,,p+1},将B序列重新编号,分别为B中的元素在A中对应出现的位置(没有的话就是0)。在样例中就是A = {1 7 5 4 8 3 9},B = {1 4 3 5 6 2 8 9}重新编号以后:A = {1 2 3 ...
分类:
其他好文 时间:
2014-08-08 09:29:55
阅读次数:
341
TOYSTime Limit:2000MSMemory Limit:65536KTotal Submissions:10281Accepted:4924DescriptionCalculate the number of toys that land in each bin of a partiti...
分类:
其他好文 时间:
2014-08-08 01:36:57
阅读次数:
317
Problem Description:
Implement pow(x, n).
分析:题目意思很简单,要求计算x的n次幂,其中x给的是double类型,n需要考虑负数的情况,利用二分的思想每次将n减半,递归计算可以得到最终结果,其中一些细节需要注意,具体的实现代码如下:
class Solution {
public:
bool isequal(double a,doubl...
分类:
其他好文 时间:
2014-08-07 19:17:00
阅读次数:
179
二分法,三分法主要是空间图形的不同,二分法主要解决的是在某个区间之间单调增或减的图形,而三分法主要解决的是凸形,或者凹形的图形,这样的用三分法比较方便些。
二分法模板,
整数类型的有以下大致模板:
int low=0,high=n,mid,x,res=-1;
while(low<high)
{
mid=(high+low)/2;
if(num[mid]==x)//其中x...
分类:
其他好文 时间:
2014-08-07 19:14:40
阅读次数:
169
用匈牙利tle啊喂?和网络流不都是n^3的吗。。。。#include #include #include #include #include #include using namespace std;#define rep(i, n) for(int i=0; i=(n);--i)#define f...
分类:
其他好文 时间:
2014-08-07 18:41:40
阅读次数:
313
# include
# include
# include
using namespace std;
int n,cot;
int map[660],vis[660],pp[660][660],u[660][660];
int bfs(int x)
{
for(int i=1;i<=cot;i++)
{
if(!vis[i]&&pp[x][i])
{
vis[i]=1;
...
分类:
其他好文 时间:
2014-08-07 15:54:20
阅读次数:
246
//是象棋里的车 符合二分匹配
# include
# include
# include
using namespace std;
int n,m,pp[110][110],map[110],vis[110];
int bfs(int x)
{
for(int i=1;i<=m;i++)
{
if(!vis[i]&&pp[x][i])
{
vis[i]=1;
if(!ma...
分类:
其他好文 时间:
2014-08-07 15:48:40
阅读次数:
183
说说:这道题初看完全不知道如何下手,但最终也不过就是个二分查找而已,其实不用二分也行,从1开始遍历从显示的结果来看花费的时间是一样的。首先,讨论N是正数的情况。很明显这是个等差数列求和的问题,当总和任然小于N的时候,那么显然此时的n还不够大。当然若直接等于N了,那输出答案就好了。如果最后总和大于N了,但两者之差为奇数,这显然是不行的,因为把序列中任何一个数变为其相反数,那总和都相当于减去一个偶数。所以此时n需要进一步变大,直到两者的差为偶数。最后将序列中的某些正号变为负号,不过具体的我们不用管,问题就解决啦...
分类:
其他好文 时间:
2014-08-07 15:48:20
阅读次数:
232
链接:http://poj.org/problem?id=3233
题意:给一个N*N的矩阵(N,求S = A + A^2 + A^3 +
… + A^k(k
思路:很明显直接用矩阵快速幂暴力求和的方法复杂度O(klogk),肯定会超时,我采用的是二分的方法, A + A^2 + A^3 +
… + A^k=(1+A^(k/2)) *(A + A^2 + A^3 +
… + A^(...
分类:
其他好文 时间:
2014-08-07 13:25:40
阅读次数:
266
//A组n人 B组m人
//最多有多少人匹配 每人只有匹配一次
# include
# include
# include
using namespace std;
int n,m,k;
int pp[1100][1100],map[1100],vis[1100];
int bfs(int x)//二分匹配模板
{
for(int i=1;i<=m;i++)//B组中的人来迎合匹配
{
...
分类:
其他好文 时间:
2014-08-07 13:25:10
阅读次数:
151