九度OJ+贪心二分+最大值最小化都是这样做的。
来源:互联网 发布:java数组的使用 编辑:程序博客网 时间:2024/05/04 10:34
点击打开链接
///正常写的二分。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<string>#include<cstring>#include<iostream>#include<algorithm>#include<math.h>#include<cstdio>int books[600];using namespace std;///本题中的下界为m个数中的最大值,因为这时候,是要划分为m个区间(即一个数一个区间),值下界是表示m个区间,值上界是表示1个区间。///left是满足题意的m个区间的最大值,上届为所有区间的和,因为这时候,是要划分为1个区间(所有的数都在一个区间里面),1<=k<=m,///所以我们所要求的值肯定在 [left, right] 之间。对于每一个mid,遍历一遍m个数,看能划分为几个区间(这里是用到了贪心)///如果划分的区间小于(或等于)给定的k,说明上界取大了, 那么 令right=mid-1,否则令 left=mid+1.int main(){ int n=0,m=0,k=0,i=0; scanf("%d",&n); while(n--){ scanf("%d%d",&m,&k); int left=0,right=0,mid=0,cnt=0,sum=0; for(i=0;i<m;i++){ scanf("%d",&books[i]); right+=books[i]; left=max(left,books[i]); } while(left<=right){ mid=(left+right)/2; cnt=1,sum=0; for(i=0;i<m;i++){ if(sum+books[i]<=mid){///贪心,还是能放在一个区间里的额 sum+=books[i]; } else{ cnt++; sum=books[i]; } } if(cnt<=k){///要选的区间比较大一些。 right=mid-1; } else{ left=mid+1; } } ///printf("%d%d\n",left,right); printf("%d\n",left); } return 0;}
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<string>#include<cstring>#include<iostream>#include<algorithm>#include<math.h>#include<cstdio>using namespace std;int books[510];int n,m,k;int main(){ scanf("%d",&n); while(n--){ scanf("%d%d",&m,&k); int left=-1,right=0; for(int i=0;i<m;i++){ scanf("%d",&books[i]); left=max(left,books[i]); right+=books[i]; } while(left<right){ int mid=(left+right)/2; int cnt=1; int sum=0; for(int i=0; i<m; i++){ if(sum+books[i]>mid){ cnt++;///划分区间,不包括当前的money[i] sum=books[i]; } else sum+=books[i]; } if(cnt<=k) right=mid; else left=mid+1; /// printf("%d %d\n",left,right); } printf("%d\n",left); } return 0;}
0 0
- 九度OJ+贪心二分+最大值最小化都是这样做的。
- 九度OJ-题目1502:最大值最小化
- Uva 714 最大值最小化 (贪心+二分)
- 最大值最小化-较为精简(二分+贪心)
- 百练+二分+贪心+最大值最小化
- 【九度1502】最大值最小化
- UVa 714 Copying Books 二分 + 贪心 (最大值最小化问题)
- UVA 714 Copying Books 最大值最小化问题 (贪心 + 二分)
- uva 714 - Copying Books(贪心 最大值最小化 二分)
- 九度笔记之 最大值最小化
- 最大值最小化 二分查找
- 【九度OJ】1038【贪心】
- 九度oj 1437 贪心
- 短信接口都是这样做的
- uva 714(最大值最小化+贪心)
- POJ3273 二分与最大值最小化
- zzuli 1919 (二分 最大值最小化)
- 题目1502:最大值最小化 二分
- Element.insertAdjacentHTML(position, text)
- 小白书贪心之区间选点问题
- 使用scrapy抓取糗事百科
- Annotation(注解)的简单理解
- android 自定义进度条下载apk并更新
- 九度OJ+贪心二分+最大值最小化都是这样做的。
- 详解js中的object对象
- 向左向右(RadioGroup组与onCheckedChanged)
- MongoDB学习—(2)shell的基本操作
- Volley的简单使用
- html+css 图片右上角加删除叉,图片删除
- python简单多线程
- 将正整数各位相加简化为个位数
- SPL的常用数据结构(2)