欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

【每日一題】華華給月月準備禮物(二分答案)

華華給月月準備禮物

https://ac.nowcoder.com/acm/problem/23049

Solution
二分答案模板題。
先給出俺的萬能二分模板: (ans為答案且注意初始化為0,其他只要改一下check函數就可以用于其他題)

ll l=1,r=max,ans=0;
while(l<=r){
    ll mid=l+r>>1;
    if(check(mid)) ans=mid,l=mid+1;
    else r=mid-1;
}

這道題的話就是直接枚舉木棍的長度,然后判斷切出的數目是否大于等于k。

Code

#include<bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define ll long long
#define io std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
inline ll read(){ll s=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();return s*w;}
void put1(){ puts("YES") ;}void put2(){ puts("NO") ;}void put3(){ puts("-1"); }
ll qp(ll a,ll b, ll p){ll ans = 1;while(b){if(b&1){ans = (ans*a)%p;--b;}a =
(a*a)%p;b >>= 1;}return ans%p;}
const int mo=998244353; const int mod=1000000007;

const int manx=2e5+5;

ll a[manx]; ll n,k;

bool check(ll x){
    ll cnt=0;
    for(int i=1;i<=n;i++)
        cnt+= a[i]/x;
    return cnt>=k;
}

int main(){
    n=read(),k=read();
    for(int i=1;i<=n;i++) a[i]=read();
    ll l=1,r=1e9,ans=0;
    while(l<=r){
        ll mid= l+r>>1;
        if(check(mid)) ans=mid,l=mid+1;
        else r=mid-1;
    }
    cout<<ans;
    return 0;
}
全部評論

相關推薦

不愿透露姓名的神秘牛友
03-18 14:29
牛客604067584號:感覺算法卷的人少很多,畢竟只有一部分bg還不錯的碩士才會考慮算法,雖然hc不如后端,但是競爭真的少很多。
點贊 評論 收藏
分享
評論
點贊
收藏
分享

創(chuàng)作者周榜

更多
??途W
??推髽I(yè)服務