#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int a[N],b[N];
int n;
long long m;
bool check(int h)
{
long long sum=0;
for(int i=1;i<=n;i++)
{
sum+=max(0,a[i]-h);
}
if(sum<m)
return false;
return true;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
int l=0,r=400000;
while(l<r)
{
int mid=(l+r+1)/2;
if(check(mid))
l=mid;
else
r=mid-1;
}
cout<<l;
return 0;
}
例题2:503. 借教室 - AcWing题库
上代码
#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
long long r[N],d[N],s[N],t[N],b[N];
long long n,m;
bool check(int mid)
{
for(long long i=1;i<=n;i++)
b[i]=r[i]-r[i-1];
for(long long i=1;i<=mid;i++)
{
b[s[i]]-=d[i];
b[t[i]+1]+=d[i];
}
for(long long i=1;i<=n;i++)
{
b[i]+=b[i-1];
if(b[i]<0)
return true;
}
return false;
}
int main()
{
cin>>n>>m;
for(long long i=1;i<=n;i++)
{
cin>>r[i];
}
for(long long i=1;i<=m;i++)
{
cin>>d[i]>>s[i]>>t[i];
}
long long l=1,r=m+1;
while(l<r)
{
long long mid=(l+r)/2;
if(check(mid))
r=mid;
else
l=mid+1;
}
if(r==m+1)
cout<<0<<endl;
else
cout<<-1<<endl<<r<<endl;
return 0;
}
完全背包理论基础
完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 体现在代码中就是对背包的遍历顺序不同。01背包是逆序遍历背包,完全背包是顺序遍历背包。
518. 零钱兑换 II class Solution {public int change(int amount, int[] coin…
BIAN ( The Banking Industry Architecture Network) 是一个业界多方协作的非营利性组织,由全球领先银行、技术提供商、顾问和学者组成,定义了一个用以简化和标准化核心银行体系结构的银行技术框架。这一框架基于面向服务的架构 (SOA) 原则,银…
一.什么是ICMP ICMP(Internet Control Message Protocol)是互联网控制报文协议,是TCP/IP协议族的一个子协议。它主要用于在IP网络中传递控制信息和错误消息,是IP协议的补充。ICMP协议是一种无连接协议,它不需要建立…
1. Flask的核心特点
a. 轻量级:核心简洁,只提供了基本的功能,其他高级功能可以通过插件或扩展来添加。 b. 灵活性:允许开发者选择适合自己项目的组件和工具,没有强制的项目结构和设计模式。 c. 易于扩展:提…