lightoj 1072 Calm Down | 二分

2024-06-12 11:48
文章标签 二分 lightoj 1072 calm

本文主要是介绍lightoj 1072 Calm Down | 二分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

与lightoj 1048 基本一样,不过是这题是弱化版,不用输出方案。

http://blog.csdn.net/u011580493/article/details/38958267

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 1e3+5;
const int INF = 0x3f3f3f3f;
int n, m;
int a[MAXN];
bool OK(int mid)
{int i = 0, tsum, cot = 0;while(i < n){tsum = 0;for(;i < n; i++){if(tsum + a[i] <= mid)tsum += a[i];elsebreak;}cot++;if(cot > m)     return false;}if(cot <= m)return true;return false;
}
int main()
{ios::sync_with_stdio(false);int T, cas = 0;cin>>T;while(T--){cin>>n>>m;int tsum = 0;for(int i = 0;i < n; i++)cin>>a[i], tsum += a[i];//int l = 0, r = tsum;int ans;while(l <= r){int mid = (l+r)/2;if(OK(mid))ans = mid, r = mid-1;elsel = mid+1;}cout<<"Case "<<++cas<<": "<<ans<<endl;}return 0;
}


这篇关于lightoj 1072 Calm Down | 二分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054128

相关文章

二分查找(算法篇)

算法之二分查找 二分查找 概念: 针对于已经预先排序好的数据,每次将数据进行对半查找,然后看它中间的数据是否是要找的,如果是就返回中间位置,不是就判断该数据是在前半部分还是后半部,然后在进而取其中部,看其是否找到,然后如果还没找到就一直重复操作,直到找到为止,该算法时间复杂度为O(logn) 代码: int search(vector<int>& nums, int target) {i

C语言实现简单二分搜索和四个变体问题

二分查找 简单的二分查找 简单指的是在不存在重复元素的数组中,查找值等于给定值的情况。 int bsearch(int *arr, int n, int value){int low = 0;int high = n - 1;int mid;while (low <= high){mid = low + ((high-low) >> 1);if (arr[mid] == value){re

leetcode 二分查找·系统掌握 x的平方根

题目: 题解 这题可以使用~01~泛型查找在0~x/2的范围内查找答案。 int mySqrt(int x) {long l=0,r=x,mid;while(l<r){mid=(l+r+1)>>1;if(mid*mid>x)r=mid-1;else l=mid;}//因为一定有答案所以不用判定是否查找失败return l;}

leetcode 二分查找·系统掌握 第一个错误版本

题意: 题解: 就是经典的~01~泛型查找,而且一定存在这样错误的版本所以查找不会"失败",返回每次查找结果即可。 int firstBadVersion(int n) {long l=1,r=n,mid;while(l<r){mid=(l+r)>>1;if(isBadVersion(mid))r=mid;else l=mid+1;}return l;}

leetcode 二分查找·系统掌握 搜索二维矩阵

题目: 题解: 一个可行的思路是使用~01~泛型对每一行的最后一个元素进行查找找到第一个大于等于target的那一行,判断查找结果如果“失败”返回false否则继续在改行进行常规二分查找target的值根据查找结果返回即可。 bool searchMatrix(vector<vector<int>>& matrix, int target) {int l=0,r=matrix.size()-

微策略面试题:在旋转后的数组中查找元素(二分查找)

版权所有。所有权利保留。 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123303 一个无重复元素的有序数组,经过若干次旋转后,得到一个新数组。比如[1,4,5,8,10,12,56,78]变成[12,56,78,1,4,5,8,10]。 现在要在这个数组中寻找元素。 其实算法很简单,就是用二分

素数伴侣--最大二分匹配

#include<bits/stdc++.h>using namespace std;#define N 100int edge[N][N],cx[N],cy[N];//edge记录两点的关系,如果两点相连,则edge【i】【j】为1int visited[N];//判断该店是否被访问过int nx,ny,res;const int M=60000+100;bool prim[M];

【秋招刷题打卡】Day02-二分系列之-二分查找

Day02-二分系列之-二分查找 前言 给大家推荐一下咱们的 陪伴打卡小屋 知识星球啦,详细介绍 =>笔试刷题陪伴小屋-打卡赢价值丰厚奖励 <= ⏰小屋将在每日上午发放打卡题目,包括: 一道该算法的模版题 (主要以力扣,牛客,acwing等其他OJ网站的题目作为模版)一道该算法的应用题(主要以往期互联网大厂 笔试真题 的形式出现,评测在咱们的 笔试突围OJ) 小屋day02 我们预

Day1:二分查找704 移除元素27

题目链接704. 二分查找 - 力扣(LeetCode) int search(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;int mid = (right - left) / 2;while (left <= right){if (target == nums[mid]){retu

[LightOJ 1292] Laser Shot (几何,判断共线)

LightOJ - 1292 刚开始写的时候是O( n3log(n) n^3log(n))的,枚举两个点,得到一条直线,用set记录下来,然后再 O( n n)地计数,居然没有卡过 orz 听了学长的教导,get到一个几何常用思路,正确解法如下 枚举一个点,再枚举其他点,计算到这个点的斜率,make_pair(dx,dy)塞到map里,把相同斜率的计数一下 这样时间复杂度为 O(n2log