• # codeforces 1199 D. Welfare State(思维+dp)


    在这里插入图片描述

    题目大意
    codeforces 1199 D

    给出n个数,q种操作:

    • 1 p x将第p个数变成x
    • 2 x将n个数中小于x的数变成x

    求最后的序列。(1 <= n,q <= 10^5)

    解题思路

    注意到对于每个数,只有在对该数的最后一次1 p x操作之后的操作才对最后答案有贡献,并且在最后一次1 p x之后的2 x操作只有x最大对应的那个操作才有贡献。

    那么问题转化成对于每个数,维护对于该数的最后一次1 p x操作和该操作之后的最大的2 p操作。可以使用lastModify[maxn]记录对于每个数最后一次单次修改操作的时间,使用maxGroupModify[maxn]记录每一次1 p x修改操作的时间。最后从后往前dp,得到的maxGroupModify[i]为从i开始的操作中最大的一次2 x操作。最后答案max(a[i],maxGroupModify[lastModify[i]+1])

    #include <iostream>
    using namespace std;
    const int maxn=2e5+5;
    int a[maxn],lastModify[maxn],maxGroupModify[maxn];
    int n,q,p,x,op;
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
    
        cin>>q;
        for(int i=1;i<=q;i++){
            cin>>op>>p;
            if(op==1){
                cin>>x;
                a[p]=x;
                lastModify[p]=i;
            }
            else{
                maxGroupModify[i]=p;
            }
        }
    
        for(int i=q-1;i>0;i--)
            maxGroupModify[i]=max(maxGroupModify[i],maxGroupModify[i+1]);
    
        for(int i=1;i<=n;i++){
            if(i-1)putchar(' ');
            printf("%d",max(a[i],maxGroupModify[lastModify[i]+1]));
        }
        return 0;
    }
    
  • 相关阅读:
    python匹配中文和非中文
    Django mysql连接错误
    linux搭建postfix邮件服务器
    linux编译安装redis
    python将py文件打包成可运行的exe文件
    mysql表结构自动生成golang struct
    linux离线安装nginx+uwsgi
    Sass/Scss
    CSS变量和浏览器前缀
    CSS中常用的函数
  • 原文地址:https://www.cnblogs.com/sstealer/p/13295981.html
Copyright © 2020-2023  润新知