首页 > 其他分享 >二分查找——修补木桶

二分查找——修补木桶

时间:2024-02-28 17:34:24浏览次数:16  
标签:二分 QAQ int 木桶 mid 修补 查找 include

修补木桶 - HihoCoder 1362 - Virtual Judge (vjudge.net)

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
#define int long long
#define QAQ 0
const int N=2e5+5,inf=0x3f3f3f3f,mod=1e7+7;

int a[100006],n,m,l;

bool check(int val){
	int cnt = 0;
	for(int i=1;i<=n;i++)
	{
		cnt = 0;
		for(int j=1;j<=n;j++)
		{
			if(a[(i+j)%n]<val)
			{
				j +=(l-1);
				cnt++;
			}
		}
		if(cnt<=m)
		{
			return true;
		}
	}
	return false;
}

void solve()
{
	
	cin>>n>>m>>l;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	int l = 0,r = 100006,ans = 0 ;
	while(l<=r){
		int mid = l+r+1>>1;
		if(check(mid))
		{
			ans= mid;
			l = mid+1;
		}
		else{
			r = mid -1 	;		
		}
	}
	cout<<ans<<'\n';
}

signed main()
{
	std::ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	int T=1;
	//cin>>T;
	while(T--)
	{
		solve();
	}
	return QAQ;
}

  

标签:二分,QAQ,int,木桶,mid,修补,查找,include
From: https://www.cnblogs.com/cancanneed/p/18041189

相关文章

  • 【算法】关于最长递增子序列(LIS)二分+贪心解法
    前言我们都知道,解决LIS的常规解法为DP,时间复杂度为O(n^2),但是在一些条件苛刻的问题中,通常DP的解法会超时。那么,是否存在一种时间复杂度更优秀的解法呢?答案是肯定的,有一种二分加贪心的解法可以将时间复杂度降低为O(nlogn)。详解如果我们现在要求下面这一组数据的LIS:我们需......
  • LeetCode二分查找 swift 面试
     funcbinarySearch(_array:[Int],_target:Int)->Int?{varleft=0varright=array.count-1whileleft<=right{letmid=(left+right)/2ifarray[mid]==target{returnmid......
  • 34. 在排序数组中查找元素的第一个和最后一个位置C
    /***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*searchRange(int*nums,intnumsSize,inttarget,int*returnSize){*returnSize=2;int*a=(int*)malloc(sizeof(int)*2);a[0]=-1;a[1]=-1;inthead=0,......
  • 704. 二分查找C
    现在开始刷代码随想录里的题了。intsearch(int*nums,intnumsSize,inttarget){inthead=0,tail=numsSize-1;while(head<=tail){intmid=(head+tail)/2;if(nums[mid]<target){head=mid+1;}elseif(nums[mid]>target){......
  • #分块,二分#洛谷 5356 [Ynoi2017] 由乃打扑克
    题目支持区间加和区间查询第\(k\)小分析分块之后给每个整块排序,这样修改的时候整块打标记,散块直接分开把需要加的部分暴力加之后归并,就是\(O(\sqrt{n})\)的查询的话,如果只有散块直接归并出结果,否则二分答案,加上小块合并成的整块,相当于是整体二分,就是\(O(\sqrt{n}\log{a_......
  • Toyota Programming Contest 2024#2(AtCoder Beginner Contest 341)D - Only one of two
    目录链接题面题意题解代码总结链接D-Onlyoneoftwo题面题意求第\(k\)个只能被\(N\)或\(M\)整除的数题解\([1,x]\)中的能被\(n\)整除的数有\(\lfloor\frac{x}{n}\rfloor\)个\([1,x]\)中的能被\(m\)整除的数有\(\lfloor\frac{x}{m}\rfloor\)个\([1,x]\)中的能被\(n\)......
  • Python数据结构与算法05——二分查找
    二分查找——递归版:defbinarySearch(aimlist,item):#获取列表的长度n=len(aimlist)#如果列表非空ifn>0:#计算中间索引mid=n//2#如果中间元素是目标元素,则找到了ifaimlist[mid]==item:......
  • 洛谷 P4198 楼房重建(线段树上二分)
    传送门解题思路动态维护区间里面单调递增斜率的长度需要维护两个信息:上述长度,和区间最大值(合并时需要)难点在于两个子区间的合并。左区间的楼房一定都能看见(没有遮挡),所以要在右区间二分,找到左面最大值lmax在右区间的位置,然后进行合并。复杂度两个log。AC代码#include<ios......
  • 二叉树查找树遍历
    二叉树查找树遍历存放规则:小的存左边、大的存右边、一样的不存前序、中序、后序指的是当前结点的顺序前序:当前结点、左子节点、右子节点中序:左子节点、当前节点、右子节点后序:左子节点、右子节点、当前结点前序遍历中左右遍历完左树遍历右树从上到下,根节点->从左......
  • wqs二分学习笔记
    wqs二分wqs是用来处理一类带有恰好选K个这种限制的问题我们如果发现这个答案关于k的函数是凸函数,那么就可以二分出斜率,然后拿它去切这个函数设这个直线为\(y=ax+b\),以上凸为例,我们要求截距最大,就是b最大,等价于\(y-ax\)最大,也就是把k限制对应的贡献-a,然后再算答案,然后就可以去......