九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案)
九度OJ
Java
import java.util.Scanner;
public class Main {
public static int max(int x ,int y){
return x > y ? x : y;
}
public static int solve(int tot , int m , int n ,int a[]){
int low = 1 , high = tot;
while(low <= high){
int mid = (low + high) / 2;
int i = 1 , count = 0 , k , flag = 1 ;
while(i <= m){
if(a[i] > mid){
flag = 0; break;
}
int sum = 0;
for(k = i; k <= m; k++){
sum += a[k];
if(sum > mid) break;
}
i = k;
count++;
}
if(flag == 0 || count > n) low = mid + 1;
else if(count == n) high = mid - 1;
else high = mid - 1;
/*
if(count <= n) high = mid - 1;
else low = mid + 1;
*/
}
return max(low , high);
}
public static void main(String[] args){
final int N = 510 , M = 510;
int cas,n,m,tot;
int[] a = new int[M];
Scanner cin = new Scanner(System.in);
cas = cin.nextInt();
while((cas--) != 0){
m = cin.nextInt();
n = cin.nextInt();
tot = 0;
for(int i = 1; i <= m; i++){
a[i] = cin.nextInt();
tot += a[i];
}
int res = solve(tot,m,n,a);
System.out.println(res);
}
}
}
C++
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define N 510
#define M 510 int a[M],tot; int main()
{
int cas,n,m;
scanf("%d",&cas);
while(cas--)
{
tot = ;
scanf("%d%d",&m,&n);
for(int i=; i<=m; i++)
scanf("%d",&a[i]) , tot += a[i];
int low = , high = tot , mid;
while(low <= high)
{
mid = (low + high) >> ;
int i = , k , count = , ok = ;
while(i<=m)
{
if(a[i] > mid)
{ ok = ; break;}
int sum = ;
for(k=i; k<=m; k++)
{
sum += a[k];
if(sum > mid) break;
}
i = k;
count++;
}
if(!ok || count > n) low = mid + ;
else if(count == n) high = mid - ;
else high = mid - ;
}
printf("%d\n",max(low,high));
}
}
九度OJ 1502 最大值最小化(JAVA)的更多相关文章
- 九度OJ 1187:最小年龄的3个职工 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2291 解决:936 题目描述: 职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来. 输入: 输入第一行包括1个 ...
- 九度OJ 1020:最小长方形 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6019 解决:2849 题目描述: 给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在 ...
- 九度OJ 1086:最小花费 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3960 解决:819 题目描述: 在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下 ...
- 九度OJ 1102:最小面积子矩阵 (DP、缓存、剪枝)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1666 解决:504 题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: ...
- 九度OJ 1209:最小邮票数 (遍历)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2252 解决:741 题目描述: 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值. 如,有1分,3分,3分,3分,4分五 ...
- 九度OJ 1371 最小的K个数 -- 堆排序
题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...
- 【九度OJ】题目1191:矩阵最大值 解题报告
[九度OJ]题目1191:矩阵最大值 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1191 题目描述: 编写一个程序输入一个mXn的 ...
- 【九度OJ】题目1187:最小年龄的3个职工 解题报告
[九度OJ]题目1187:最小年龄的3个职工 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1187 题目描述: 职工有职工号,姓名, ...
- 【九度OJ】题目1438:最小公倍数 解题报告
[九度OJ]题目1438:最小公倍数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1438 题目描述: 给定两个正整数,计 ...
随机推荐
- 浅谈sql中的in与not in,exists与not exists的区别
转 浅谈sql中的in与not in,exists与not exists的区别 12月12日北京OSC源创会 —— 开源技术的年终盛典 » sql exists in 1.in和exists ...
- iOS开发——高级技术&iCloud服务
iCloud服务 iCloud 是苹果提供的云端服务,用户可以将通讯录.备忘录.邮件.照片.音乐.视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至 即使你的设备丢失后在一 ...
- Leetcode 235 Lowest Common Ancestor of a Binary Search Tree 二叉树
给定一个二叉搜索树的两个节点,找出他们的最近公共祖先,如, _______6______ / \ ___2__ ___8__ / \ / \ 0 4 7 9 / \ 3 5 2和8的最近公共祖先是6, ...
- Leetcode 200 Number of Islands DFS
统计联通区域块的个数,简单dfs,请可以参考DFS框架:Leetcode 130 Surrounded Regions DFS class Solution { public: int m, n; b ...
- Multiplexing SDIO Devices Using MAX II or CoolRunner-II CPLD
XAPP906 Supporting Multiple SD Devices with CoolRunner-II CPLDs There has been an increasing demand ...
- Windows共享内存示例
共享内存主要是通过映射机制实现的. Windows 下进程的地址空间在逻辑上是相互隔离的,但在物理上却是重叠的.所谓的重叠是指同一块内存区域可能被多个进程同时使用.当调用 CreateFileMapp ...
- 【Android开发坑系列】之事件
总结一下: 1.Touch事件分发中只有两个主角:ViewGroup和View.ViewGroup包含onInterceptTouchEvent.dispatchTouchEvent.onTouchE ...
- db2 表授权语句
grant insert/update/delete on table schema.table_name to user user_name;
- 解决Electron加载带jquery的项目报错问题
<!-- Insert this line above script imports --> <script>if (typeof module === 'object') { ...
- QQ互联开发-01-开发者注册和网站应用申请
首先需要申请网站应用 要想使用QQ互联,首先需要先注册一个开发者账号,使用QQ号码可以注册,注册后,就可以创建网站应用了: 通过下面地址:https://connect.qq.com/,我们去登录QQ ...