HDU 3280 Equal Sum Partitions(二分查找)

原创 2015年07月10日 13:39:42

Equal Sum Partitions

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 551    Accepted Submission(s): 409


Problem Description
An equal sum partition of a sequence of numbers is a grouping of the numbers (in the same order as the original sequence) in such a way that each group has the same sum. For example, the sequence:
2 5 1 3 3 7
may be grouped as:
(2 5) (1 3 3) (7)
to yield an equal sum of 7.

Note: The partition that puts all the numbers in a single group is an equal sum partition with the sum equal to the sum of all the numbers in the sequence.

For this problem, you will write a program that takes as input a sequence of positive integers and returns the smallest sum for an equal sum partition of the sequence.
 

Input
The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. The first line of each data set contains the data set number, followed by a space, followed by a decimal integer M, (1 ≤ M ≤ 10000), giving the total number of integers in the sequence. The remaining line(s) in the dataset consist of the values, 10 per line, separated by a single space. The last line in the dataset may contain less than 10 values.
 

Output
For each data set, generate one line of output with the following values: The data set number as a decimal integer, a space, and the smallest sum for an equal sum partition of the sequence.
 

Sample Input
3 1 6 2 5 1 3 3 7 2 6 1 2 3 4 5 6 3 20 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
 

Sample Output
1 7 2 21 3 2
 

Source
 

Recommend



/*
 题意:n个数,分成若干个集合,要求每个集合的数和相同,求集合最小值
 思路:枚举当前集合判断是否满足条件

*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

typedef __int64 ll;

#define N 10005
#define INF 0x3f3f3f3f

int sum[N];
int n;

bool fdd(ll temp)
{
     int hh=0;
     int pos=0;
     while(pos!=n)
     {
         hh+=temp;
         pos=upper_bound(sum+1,sum+n+1,hh)-(sum+1);
         if(sum[pos]!=hh)
         {
            return false;
         }
     }
     return true;
}

int main()
{
    int i,j,t,ca;
    sum[0]=0;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&ca,&n);
        int x;
        for(i=1;i<=n;i++)
        {
            scanf("%d",&x);
            sum[i]=sum[i-1]+x;
        }


        for(i=1;i<=n;i++)
            if(fdd(sum[i])) break;

        printf("%d %d\n",ca,sum[i]);
    }
    return 0;
}


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

hdu 5178 二分查找

原文链接 源代码1: #include #include #include using namespace std; int main() { long long int i,j,k,l...
  • u014265347
  • u014265347
  • 2015年05月09日 23:37
  • 516

ACM 二分答案 二分查找 hdu4071

二分最短距离 /* * Author: nick wong * Created Time: 2014年08月23日 星期六 13时34分11秒 * File Name: a.cpp */...
  • nickwong_
  • nickwong_
  • 2014年08月23日 18:25
  • 884

HDU——1303Doubles(水题,试手二分查找)

Doubles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su...
  • a88770202
  • a88770202
  • 2016年02月13日 21:45
  • 251

leetcode 刷题题解(c++) 1.Two Sum (hash表,排序+二分查找)

c++刷leetcode,有题目和算法代码,可直接在leetcode提交通过。
  • GOGO_YAO
  • GOGO_YAO
  • 2016年07月24日 20:59
  • 542

HDU 3333 线段树+离线处理

点击打开链接 题意:问你给定区间内的不重复的数字的和,如1 1 1 3 4 ,区间1到2就是1,区间1到5就是8 思路:这种线段树只能离线来写,离线的方法是按照查询区间的右端点来排序,然后这道题目...
  • Dan__ge
  • Dan__ge
  • 2016年06月12日 21:03
  • 1703

HDU1003 Max Sum 最大子序列和的问题【四种算法分析+实现】

就拿杭电OJ上的第1003题开始吧,这题比原书要复杂一些。 Problem Description Given a sequence a[1],a[2],a[3]......a[n], your ...
  • u012846486
  • u012846486
  • 2014年05月18日 21:08
  • 1443

Java版 二分查找

一、算法介绍 折半查找(搜索)、二分查找(搜索)           已经排序的数据(假如是从左向右依次递增),取出中间数与查找值比较      如果中间值大于查找值,应该再次向左侧查找,因为左侧都...
  • love_world_
  • love_world_
  • 2014年01月05日 14:09
  • 1595

hdu 1024 Max Sum Plus Plus(动态规划+m子段和的最大值)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Limit: 2000/1000 MS (J...
  • qiqi_skystar
  • qiqi_skystar
  • 2016年01月28日 12:40
  • 2475

二分查找算法及其变种

前言二分查找算法也称为折半查找算法,是一种在查找算法中普遍使用的算法。其算法的基本思想是:在有序表中,取中间的记录作为比较关键字,若给定值与中间记录的关键字相等,则查找成功;若给定的值小于中间记录的关...
  • u011116672
  • u011116672
  • 2015年12月06日 16:43
  • 2407

二分查找各种情况大总结

二分查找多次刷题时遇到,虽然每次也能写对,但花了蛮多时间,没好好想过。而且网上的太多版本,并不是很简洁,而且边界条件变化情况太多,容易混淆,下面是自己对二分查找的一些思考和总结,尽量写得简单易懂。 ...
  • yefengzhichen
  • yefengzhichen
  • 2016年08月30日 21:40
  • 11749
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 3280 Equal Sum Partitions(二分查找)
举报原因:
原因补充:

(最多只允许输入30个字)