nyoj680摘枇杷
来源:互联网 发布:淘宝gxg官方店是正品吗 编辑:程序博客网 时间:2024/04/27 18:48
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=680
或者:http://115.159.40.116/problem_show.php?pid=5264
题目大意就是将n个数组成的一列,分成m份,使m份中最大的那份中所有数的和尽量小,如下例:
或者:http://115.159.40.116/problem_show.php?pid=5264
题目大意就是将n个数组成的一列,分成m份,使m份中最大的那份中所有数的和尽量小,如下例:
n=7 m=5 数据为: 1 4 3 1 5 2 4 答案: 5
分为1+4,3+1,5,2,4
AC代码:
#include <stdio.h>#include <math.h>int m, n, num[1005];int Judge(int avg){int i = 0, s = 0, con = 0;for(; i < n; i++){if(s+num[i] > avg){s = 0;con++;}s += num[i];}if(i == n && con < m) return 1;//当份数等于m时自然是符合的,因最后一组未con++,故用con<m//当份数<m时,可以将!=avg的其他份拆了直至m份,这时也符合 //代码没有考虑输入数据有误时的情况,如数据个数为2,分成3份;对于此情况 上述return 1条件不适用 return 0;}int main(){int i, avg;while(~scanf("%d%d", &n, &m)){int sum = 0, max = -1;for(i = 0; i < n; i++){scanf("%d", &num[i]);sum += num[i];if(num[i] > max) max = num[i];}avg = ceil(sum*1.0/m);//向上取整 if(max > avg) avg = max;//如果数组中有大于平均值的数直接从max开始循环,否则从avg开始++寻找 while(avg <= sum){if(Judge(avg)) break;avg++;}printf("%d\n", avg);}return 0;}
1 0
- nyoj680摘枇杷
- 贪心算法之——摘枇杷(nyoj680)(贪心+二分搜索)
- 摘枇杷
- 摘枇杷
- 摘枇杷
- NYOJ 680 摘枇杷
- 二分 摘枇杷
- 摘枇杷(最大值最小化)
- NYOJ 摘枇杷 (最大化最小值)
- 二分枚举 +贪心 NOJ 680 摘枇杷
- nyoj-680(摘枇杷) 贪心 + 二分
- nyoj 680 摘枇杷(二分+贪心)
- NYOJ 680 摘枇杷(二分搜索+贪心)
- 品白茶,尝枇杷,写代码
- 家乡的枇杷-----仅以此文献给老担心我吃不好东西的父母
- 开始挑食了。。。喜欢吃番茄蛋汤,枇杷,樱桃。讨厌开心果跟白开水!!
- 浮光容易把人抛,红了枇杷,绿了芭…
- 摘>
- python PyQt5初级教程hello world
- 利用IntelliJ IDEA与Maven开始你的Scala之旅
- 从hello world 开始
- java-StringBuilder类
- spring aop execution表达式
- nyoj680摘枇杷
- 最深的红尘里,陌上为谁花开
- ios应用提交错误记录
- IIS 7.5 HTTP 错误 404.3 - Not Found错误的解决方法
- C++学习笔记 lesson10 C++ vector容器
- .babelrc文件的一些简单的配置
- tomcat运行PHP代码简单方法
- 程序猿成长的必读书单
- Socket学习 - PHP+Socket多进程处理请求学习