`

poj 3273

 
阅读更多

题意:给你天数n,和每天需要花的钱,让你把这些天分成m份(每份都是连续的天),要求每份的和尽量少,输出这个和。
    一开始二分的上界为n天花费的总和(相当于分成1份),下界为每天花费的最大值(相当于分成n份),然后二分,每次的mid值为(上界 + 下界)/ 2,然后根据mid值遍历n天花费,对n天的花费进行累加,每当超过mid值 份数++,看看这个mid值能把n天分成几份,如果份数大于m,表示mid偏小,下界 = mid + 1,反之小于等于mid,上界 = mid - 1,然后输出最后的mid值即可,复杂度为 O(nlogM),M约为第一次的上界。

 

代码如下:

 

#include<iostream>
using namespace std;
const int Max = 100050;

int main()
{
    int n, m, money[Max];
    scanf("%d%d", &n, &m);
    int i, max = 0, sum = 0;
    for(i = 1; i <= n; i ++)
	{
        scanf("%d", &money[i]);
        if(money[i] > max) 
			max = money[i];
        sum += money[i];
    }
	
    int mid, low = max, high = sum;
    while(high > low)
	{                    //  二分。
        mid = (high + low) / 2;
        int count = 1, w = 0;
        for(i = 1; i <= n; i++)
		{         //  count为当前mid值对应的把天分成的份数。
            w += money[i];
            if(w > mid)
			{
                count ++;
                w = money[i];
            }
        }
        if(count > m) 
			low = mid + 1;      //  整数在/2的时候可能造成精度不够,故可+1。
        else 
			high = mid - 1;
    }
    printf("%d\n", high);
    return 0;
}

 

通过这道题目,复习了二分查找,又进一步学习了贪心算法。

 

 

 

分享到:
评论

相关推荐

    POJ3273-Monthly Expense

    【标题】"POJ3273-Monthly Expense"是一个编程题目,源自北京大学的在线判题系统POJ(Problem Set of Peking University)。这个题目主要考察的是算法设计和问题解决能力,通常在ACM/ICPC(国际大学生程序设计竞赛)...

    POJ3273.rar_M?n

    《POJ3273 Monthly Expense 题解——数据结构与动态规划的应用》 POJ3273,这是一道经典的算法竞赛题目,它涉及到的问题是:如何有效地合并连续的数,使得合并后的集合数量不超过M个,并且这些集合的和尽可能小。这...

    POJ算法题目分类

    * 计算方法:计算方法是指解决问题的计算方法算法,如 poj3273、poj3258、poj1905、poj3122。 七、计算几何学 计算几何学是指解决问题的计算几何学算法,包括几何公式、叉积和点积的运用、多边型的简单算法和...

    poj题目分类

    * 二分法求解单调函数相关知识:例如 poj3273、poj3258、poj1905、poj3122。 计算几何学 1. 几何公式。 2. 叉积和点积的运用:例如 poj2031、poj1039。 3. 多边型的简单算法(求面积)和相关判定(点在多边型内,...

    POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类

    - **例题**:poj3273, poj3258, poj1905, poj3122 - **解释**:概率统计问题通常涉及计算某个事件发生的概率。 ### 五、数值计算 #### 1. 数值分析 - **例题**:未列出具体题目 - **解释**:数值分析涉及数值计算...

    poj各种分类

    如二分法用于逼近单调函数的根,提高算法效率,见poj3273和poj3258。 ### 七、计算几何学 #### 几何公式与运算 叉积和点积用于判断线段交叉、计算点到线段距离等,如poj2031。 #### 多边形算法 包括求多边形面积...

    POJ题目简单分类(ACM)

    - **计算方法**:如二分法求解单调函数,如poj3273。 7. **计算几何**: - **几何公式**:用于解决几何问题。 - **叉积与点积**:辅助判断线段相交、点到线段距离等,如poj2031。 - **多边形算法**:如求面积、...

    POJ 分类题目 txt文件

    例如,题目poj3273和poj3258就涉及到几何知识。 ### 8. 编程技巧 编程技巧部分强调代码的编写规范、效率优化和调试技巧。例如,C++标准模板库(STL)的使用、自定义数据结构的设计等。掌握这些技巧有助于提高代码...

    acm训练计划(poj的题)

    - (poj3273, poj3258, poj1905, poj3122):研究两个或多个参与者之间的决策过程。 ### 六、数值计算 1. **精度控制**: - 如何处理浮点数的精度问题。 2. **高精度运算**: - 处理大数的加减乘除等操作。 3. ...

    经典 的POJ 分类

    - POJ 3273、POJ 3258:几何对象之间的关系。 - POJ 1905、POJ 3122:复杂的几何计算问题。 ### 字符串处理 #### 后缀数组 - **题目示例**: - POJ 2031、POJ 1039:后缀数组的构建与应用。 #### 字典树 ...

    ACM-POJ 算法训练指南

    1. **博弈论基础**:如Nim游戏策略(poj3273, poj3258, poj1905, poj3122)。 ### 九、数值分析 1. **数值方法**:包括数值积分、数值微分等(poj2031, poj1039)。 2. **数值稳定性**:关注算法的精度和稳定性...

    POJ 分类题目

    - poj3273 - poj3258 - poj1905 - poj3122 - **应用场景**:适用于数值分析、方程求解等问题。 #### 七、计算几何学 **1. 几何公式** - **定义**:包括计算面积、周长等。 - **示例题目**: - poj1265 - poj...

    强大的POJ分类——各类编程简单题及其算法分类

    3. **计算方法**:掌握二分法求解单调函数问题,如POJ3273、3258、1905和3122。 ### 计算几何学 1. **几何公式**:理解和应用几何原理。 2. **叉积和点积**:用于判断线段相交、计算距离等,如POJ2031和1039。 3. *...

    POJ题目分类

    - **示例题目**: poj3273, poj3258, poj1905, poj3122 ### 六、组合数学 #### 1. 组合数学 - **内容**: 包括排列组合、容斥原理等问题。 - **示例题目**: 未给出具体题目 - **知识点**: - **排列组合**:从n个...

    ACM常用算法及其相应的练习题.docx

    - poj3273, poj3258, poj1905, poj3122 七、计算几何学 * 几何公式 * 叉积和点积的运用:poj2031, poj1039 * 多边型的简单算法:poj1408, poj1584 * 凸包:poj2187, poj1113 中级部分: 一、基本算法 * C++的...

    ACM常用算法及其相应的练习题 (2).docx

    (3) 计算方法:poj3273, poj3258, poj1905, poj3122 八、计算几何学 本部分涵盖了计算几何学,包括几何公式、叉积和点积的运用、多边型的简单算法和相关判定、凸包等。 (1) 几何公式: (2) 叉积和点积的运用:poj...

    ACM算法总结大全——超有用!

    3. 计算方法:二分法解决单调函数问题,如poj3273、poj3258等。 七、计算几何学 1. 几何公式:如点、线、面的关系。 2. 叉积和点积:用于判断线段相交和距离计算,如poj2031、poj1039。 3. 多边形:求面积和相关...

    很快速的提高算法能力.pdf

    数学知识是算法中的另一个重要组成部分,包括组合数学(如 poj3252)、数论(如 poj2635)和计算方法(如 poj3273)。 计算几何学则涉及到几何公式、点积和叉积的运用,以及多边形的处理,例如 poj2031 和 poj1039...

    acm 分类 北大

    - 计算方法:如二分法,如POJ3273。 7. **计算几何学** - 几何公式:应用几何原理解决问题,如点到线段距离。 - 叉积和点积:用于判断线段相交和距离,如POJ1039。 - 多边形算法:计算面积和相关判定,如POJ...

    北大acm试题

    poj3252、poj1850、poj1019和poj1942等题目涉及组合数学,poj2635、poj3292、poj1845和poj2115则与数论相关,而poj3273、poj3258、poj1905和poj3122则需要使用到计算方法。 七、计算几何学 计算几何学是处理几何...

Global site tag (gtag.js) - Google Analytics