首页 > 其他分享 >P11218 【MX-S4-T2】「yyOI R2」youyou 不喜欢夏天

P11218 【MX-S4-T2】「yyOI R2」youyou 不喜欢夏天

时间:2024-11-30 22:00:06浏览次数:9  
标签:2000005 方案 yyOI R2 int P11218 yy youyou 2m

Problem

image

Solve

先不看yy,我们能够发现这个youyou可以贪心,即:
某一列全是1,全选,有一个1,尽量只选1(因为可能和上一列的选择连不起来,要衔接),全0,尽量不要选
再回来看yy,通过题意以及样例等数据来看,我们能够发现这个yy肯定只会对满足这样的列进行操作:
上下两行只选了一行1,另一行是0
通过手玩得知,不看yy的方案似乎真的可以成为一种策略,但是要被yy减去一些
然后还有一种方案(样例#1及编造)是刻意抵抗yy,直接让能换的列全选,虽然多了0,但是比yy的多了0还少了1要好多了
不难发现,除了以上两种方案,其余的方案都是劣的,证明:

假设选择第一个方案,中间不改动,且yy没来时结果为X
则yy来了是结果为X-2m(如果能用完更换次数的话)
那此时我做一些改动(结合第二个方案),结果一定会<X-2m
则yy来了是结果为X-2y(如果用不完,y是更换的次数)
做一些改动会使得结果变大,因为有些列阻止yy换了,及时止损
那此时我们直接使用方案2获得最大收益

那问题就简单了,对于方案2,直接DP求每列收益的最大子段和,答案记作\(a\)
对于方案1,我们这里也采取DP的方式:
设\(f_{i,0/1,0/1}\)为第i列的上下两行选或不选的情况下获得的最大收益,答案记作\(b\),转移方程很简单,这里就不给出了
最后答案就是\(max(a,b-2m)\),因为选方案1时yy能来捣乱
为什么能交换的行数小于m也要减去2m :不管怎么选,只要这种情况就一定有\(a\ge b-2m\)
对于方案1最好不要贪心去写,比如:以上下全0的列做分割,把数据分成几个块,把每个块的求出来,再跑最大子段和,细节较多,很难写(别问我怎么知道的qaq)

Code

#include<bits/stdc++.h>
using namespace std;
int c,T,n,m,f[2000005],g[2000005][2][2],a[2000005];
string s1,s2;
int fx(char x){
    if(x==48)return -1;
    return 1;
}
void input(){
    cin>>n>>m;
    s1=s2="#";
    getchar();
    for(int i=1;i<=n;i++){
        s1+=getchar();
    }
    getchar();
    for(int i=1;i<=n;i++){
        s2+=getchar();
    }
}
int main(){
    cin>>c>>T;
    while(T--){
        input();
        int maxn=0,sum=0;
        for(int i=1;i<=n;i++){
            int tmp=0;
            if(s1[i]=='1'&&s2[i]=='1')a[i]=2;
            else if(s1[i]=='0'&&s2[i]=='0')a[i]=-2,tmp=1;
            else a[i]=0;
            f[i]=max(f[i-1]+a[i]+tmp,a[i]+tmp);
            maxn=max(maxn,f[i]);
        }
        for(int i=1;i<=n;i++){
            g[i][1][1]=max(0,max(g[i-1][1][1],max(g[i-1][1][0],g[i-1][0][1])))+a[i];
            g[i][1][0]=max(0,max(g[i-1][1][1],g[i-1][1][0]))+fx(s1[i]);
            g[i][0][1]=max(0,max(g[i-1][1][1],g[i-1][0][1]))+fx(s2[i]);
            sum=max(sum,max(g[i][1][1],max(g[i][1][0],g[i][0][1])));
        }
        cout<<max(sum-2*m,maxn)<<endl;
    }
    return 0;
}

标签:2000005,方案,yyOI,R2,int,P11218,yy,youyou,2m
From: https://www.cnblogs.com/yiweixxs/p/18579004

相关文章

  • FANUCR2000iB发那科机器人保养有哪些
     1.机器人保养的重要性 机器人都需要预防性保养,这样可以保证它们在生产线上保持最佳性能和实现一致性。当机器人没有进行定期的预防性保养检查,可能会导致零部件损坏或故障,从而致使生产放慢甚至停机。对机器人的正确保养可能会延长其寿命多年甚至数十年,定期进行预防性机器人保......
  • 电动车电池入户管理技术方案-SI24R2H/SI24R05
      据有关部门统计,全国电动自行车保有量约有4亿辆,每年仍有较大幅度增长;国家消防救援局的统计数据显示,2023年全国共接报电动自行车火灾2.1万起,相比2022年上升17.4%。有80%的电动自行车火灾是在充电时发生的;为了预防用户将二轮电动车或者电池带入居民楼充电,除了各级政府机关大力宣......
  • 【论文阅读】Zero-Reference Low-Light Enhancement via Physical Quadruple Priors(CV
    概要任务领域:低光增强;零样本/无参考;RGB域针对问题:零参考是成功的,但是缺少光照概念,依赖手工设置。解决方法:基于Kubelka-Munk理论,设计物理四先验作为低光和正常光的不变要素,再利用生成模型将先验转为图像。主要创新:物理四先验的设计;先验到图像的映射。最终表现:优于大多数无监......
  • Adobe Premiere Pro(PR2024)专业视频编辑软件下载安装
    一、AdobePremierePro软件简介1.软件概述AdobePremierePro(AdobePR)是Adobe公司推出的专业视频编辑软件,它为用户提供了全面的视频剪辑、色彩分级、音频处理等功能,广泛应用于电影、电视、广告以及其他类型的视频制作。PremierePro支持多种视频格式,包括4K、8K、360度视频......
  • newstar2024 reverse
    Newstar2024--Reversebase64无壳shiftf12查找字符串换表的base64加密Simple_encryption打开主函数直接查看buffer,逆向破解enc=[0x47,0x95,0x34,0x48,0xA4,0x1C,0x35,0x88,0x64,0x16,0x88,0x07,0x14,0x6A,0x39,0x12,0xA2,0x0A,0x37,0x5C,0......
  • [EULAR2023]CLASSIC研究未达终点
    #EULAR#CLASSIC研究当前的中轴型脊柱关节炎分类标准(2009)"可能"需要更新(尚有争议).SPARTAN(北美SpA研究与治疗协作网)在EULAR2023发布"CLASSIC研究"结果.该研究未达到预设终点.​​​                      ◀......
  • P11323 【MX-S7-T1】「SMOI-R2」Happy Card
    P11323【MX-S7-T1】「SMOI-R2」HappyCard-洛谷|计算机科学教育新生态(luogu.com.cn)这题不复杂,本质就是一个贪心,可以发现,三带一和炸弹可以合并为三个相同的带任意一张牌。那我们尽量都选三张相同的,这样每种牌最后只剩\(0,1,2\)张牌,我们先用三张带走尽量带走只剩1张的......
  • P11324 【MX-S7-T2】「SMOI-R2」Speaker
    P11324【MX-S7-T2】「SMOI-R2」Speaker-洛谷|计算机科学教育新生态(luogu.com.cn)就是,复杂的分类讨论。最核心的就是树上倍增求链的最大值。不写多了。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>usingnamespace......
  • YOLOv10改进,YOLOv10添加DynamicConv(动态卷积),CVPR2024,二次创新C2f结构
    摘要大规模视觉预训练显著提高了大规模视觉模型的性能。现有的低FLOPs模型无法从大规模预训练中受益。在本文中,作者提出了一种新的设计原则,称为ParameterNet,旨在通过最小化FLOPs的增加来增加大规模视觉预训练模型中的参数数量。利用DynamicConv动态卷积将额外的参......
  • Adobe Premiere(简称PR2024)视频编辑软件下载
    一、发展历史1.1早期版本AdobePremiere(简称PR)是Adobe公司推出的一款视频编辑软件,其历史可以追溯到1991年。当时,Adobe发布了Premiere1.0版本,仅支持MacOS系统。1993年9月,Adobe公司推出了首个针对Windows系统的Premiere版本,这使得更多用户能够接触和使用这款强大的视频编辑工......