• POJ 1844:Sum ”滚动“数组


    Sum
    Time Limit: 1000MS   Memory Limit: 30000K
    Total Submissions: 10494   Accepted: 6895

    Description

    Consider the natural numbers from 1 to N. By associating to each number a sign (+ or -) and calculating the value of this expression we obtain a sum S. The problem is to determine for a given sum S the minimum number N for which we can obtain S by associating signs for all numbers between 1 to N. 

    For a given S, find out the minimum value N in order to obtain S according to the conditions of the problem. 

    Input

    The only line contains in the first line a positive integer S (0< S <= 100000) which represents the sum to be obtained.

    Output

    The output will contain the minimum number N for which the sum S can be obtained.

    Sample Input

    12

    Sample Output

    7

    Hint

    The sum 12 can be obtained from at least 7 terms in the following way: 12 = -1+2+3+4+5+6-7.

    给一个数sum,问从1到n,各个数可以取正取负,想找到最小的n,从1到n加起来是sum。

    这个题记一下在于数组的使用,做的时候发现开不了那么大的数组,于是就得利用当前的数只和前面一个数的状态有关,所以2个数组就好用了,&1这里决定要记一下。

    代码:

    #include <iostream>
    #include <algorithm>
    #include <cmath>
    #include <vector>
    #include <string>
    #include <cstring>
    #pragma warning(disable:4996)
    using namespace std;
    
    int a[3][200005];
    
    int main()
    {
    	int i, j, x;
    
    	while (cin >> x)
    	{
    		memset(a[0], 0, sizeof(a[0]));
    		memset(a[1], 0, sizeof(a[1]));
    		a[0][100000] = 1;
    		for (i = 1;; i++)
    		{
    			memset(a[i&1], 0, sizeof(a[i&1]));
    			for (j = 0; j <= 200000; j++)
    			{
    				if (a[(i - 1) & 1][j] == 1)
    				{
    					a[i & 1][j + i] = 1;
    					a[i & 1][j - i] = 1;
    				}
    			}
    			if (a[i & 1][100000 + x] == 1 || a[i & 1][100000 - x] == 1)
    			{
    				cout << i << endl;
    				break;
    			}
    		}
    	}
    	return 0;
    }
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/lightspeedsmallson/p/4899590.html
Copyright © 2020-2023  润新知