首页 > 其他分享 >2022 ICPC 南京 D

2022 ICPC 南京 D

时间:2023-01-12 19:24:23浏览次数:45  
标签:cnt return int 南京 mid ICPC 2022 我们 check

D. Chat Program

二分答案x
我们考虑如何O(n)check
首先我们可以将大于等于x的都看成1 否则看成0
题意转化为我们通过一次操作将这个01序列中的1变得大于k个
我们设dp[i]为i为长度m的等差数列的尾巴能改变多少个0->1
对于每个a[i]我们可以O(1)搞出他对dp[i]的一个区间+1
然后我们扫一遍即可
最后注意我们m有2e5个 ai是1e9 所以二分最大为2e14
还有就是一些细节比如 我们

前面m个的话最多只能+ c+d*min(i-1,m-1) 而不是等差数列最大的那项

int a[200010],n,k,m,c,d,f[200010];//f[i]表示i是头有多少可以变成1
vector<int>s;
bool check(int x){
    int cnt = 0;
    for (int i = 1; i <= n; i++) cnt += a[i] >= x ? 1 : 0;
    if (cnt >= k) return true;
    for(int i=0;i<=n+3;i++)f[i]=0;
    for(int i=1;i<=n;i++){
        if(a[i]>=x||a[i]+c+d*min(i-1,m-1)<x)continue;
        f[max(m,i)]++;
        auto it=lower_bound(all(s),x-a[i]);
        f[min(n+1,i+m-(it-s.begin()))]--;
    }
    for(int i=1;i<=n;i++)f[i]+=f[i-1];
    for(int i=m;i<=n;i++){
        if(f[i]>=k-cnt)return true;
    }
    return false;
}
void solve(){
    cin>>n>>k>>m>>c>>d;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=m;i++){
        if(i==1)s.push_back(c);
        else s.push_back(s.back()+d);
    }
    int l=0,r=1e15;
    while(l<r){
        int mid=l+r+1>>1;
        if(check(mid))l=mid;
        else r=mid-1;
    }
    cout<<l<<endl;
}

标签:cnt,return,int,南京,mid,ICPC,2022,我们,check
From: https://www.cnblogs.com/ycllz/p/17047702.html

相关文章

  • 2022 openEuler领先实践奖出炉!
    随着欧拉操作系统的规模应用,涌现出一大批优秀实践,有力推动了基础软件产业的创新和行业数字化转型深入。国家工业信息安全发展研究中心、OpenAtomopenEuler社区联合发起,由院......
  • The State of JS 2022 All In One
    TheStateofJS2022AllInOneTheStateofJS2022:LibrariesVitesthttps://2022.stateofjs.com/en-US/libraries/(......
  • 2022 ICPC 南京 A
    Stop,YesterdayPleaseNoMore和很多题解不同的是我记录的是袋鼠的左上和右下两个点最后我们再用洞反向去吃袋鼠即可这样问题就转化成了一个规则矩形和一个路径相交......
  • 2022 年度总结
    前言写这篇博客的起因是,公司要求写年度个人总结。我翻了下网上的总结,都不太符合自己的情况,于是打算真情实感地原创一篇。年度总结,无非就是梳理下有没有完成年初的flag,再......
  • 2022年中国数据库排行榜年终盘点-墨天轮
    深山虎啸雄风在,绿野兔奔好景来。 崭新的2023年已经到来,在2022年里,国产数据库行业发生了翻天覆地的变化,投融资此起彼伏,国产化替代进程加速,国产数据库行业发展的如火如荼。......
  • 洛谷 P8077 [WC2022] 序列变换 题解
    题目链接。WC2023之前补一下WC2022的题,参考了官方题解。首先,把括号序列转化为二叉树,\(\texttt{(A)B}\)转为一个点的左子树是\(A\),右子树是\(B\)。相当于括号序列先......
  • CSP-J/S 2022 游记
    9.18初赛日J组选择比程序阅读和填空难(反正有E不管了(S比去年简单不少(至少程序基本都看懂了)就是质量严重下降,好多云里雾里的,建议重修语文(S估分大概60多吧,如果spasmodic......
  • 2019 ICPC Shanghai Site记录
    K-ColorGraph发现\(n\)只有\(16\),可以爆搜!考虑到无奇环和二分图互为充要条件,只要暴力枚举在二分图左边还是右边,根据定义看最多能保留多少条边就可以了!查看代码#in......
  • 2022铁人三项pwn wp
    heap2019一点也不会,太菜了,zikh师傅太强了直接带我入门io保护比赛时一脸懵比,已经隐隐感觉与io有关,就知道跟我没关系了漏洞利用输入的时候没有\x00截断且下面有一个pu......
  • 腾讯云-2022年4季度收费调整的产品汇总
    云服务器CVM 关于新加坡地域竞价实例弹性优惠公告竞价实例费用为原来的25%左右.覆盖大部分产品.https://cloud.tencent.com/document/product/213/82558云服务器系统......