Do Not Try This Problem Gym - 102307D

题意:给个长度为len的字符串(len<=1e5),然后q次操作(q<=1e5),每次给出i,a,k,c,(i+k*a<=len)也就是把字符串位置为i,i+a,i+2*a...,i+k*a的改成c字符,输出q次操作后的字符串。

首先暴力做法肯定是遍历字符串的每个位置,然后从后往前遍历,找到最后一个修改到这个位置的操作,但这样的时间复杂度是n*q,是1e10级别的,很明显不行。然后看提交里一位大佬的代码,才明白是怎么个做法。

我们的入手点就在i+k*a<=len这里,i基本没啥影响我们不管i,直接看k*a,设n为√len,那么如果k<=n,我们就直接更新,此时是n*q,是3e7级别的。

那么对于k>n的,此时a<=n,我们就遍历a从1到n,对每个a进行考虑,相同a的按照操作次序从后往前的顺序进行遍历,因为是相同的a,那么同一个位置的下一个位置也是一样的,

所以我们可以用一个并查集的区间合并进行跳转,这样对于相同的a,字符串的每个位置只会被遍历到一个,此时是n*len*并查集find小于log的一个复杂度。

 #include<cstdio>
#include<cmath>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+;
struct Node{
int p,a,k,id;
Node(){}
Node(int p,int a,int k,int id):p(p),a(a),k(k),id(id){}
};
char mmp[N],mmk[N];
int ans[N],fa[N];
vector<Node> vv;
void init(int n){
vv.clear();
for(int i=;i<=n;i++) ans[i]=;
}
int find(int x){
return fa[x]==x ? x : fa[x]=find(fa[x]);
}
int main(){
int lens,n,q,p,a,kk;
while(~scanf("%s%d",mmp+,&q)){
lens=strlen(mmp+);
n=sqrt(lens);
init(lens);
for(int i=;i<=q;i++){
scanf("%d%d%d %c",&p,&a,&kk,&mmk[i]);
if(kk<=n){
for(int j=;j<=kk;j++) ans[p+j*a]=max(ans[p+j*a],i);
continue;
}
vv.push_back(Node(p,a,kk,i));
}
for(int i=;i<=n;i++){
for(int j=;j<=lens+;j++) fa[j]=j;
for(int j=(int)vv.size()-;j>=;j--){
if(vv[j].a!=i) continue;
for(int k=find(vv[j].p),lim=vv[j].p+vv[j].k*vv[j].a;k<=lim;k=find(k)){
ans[k]=max(ans[k],vv[j].id);
fa[k]=k+i<=lens ? find(k+i) : lens+;
}
}
}
for(int i=;i<=lens;i++) if(ans[i]) mmp[i]=mmk[ans[i]];
printf("%s\n",mmp+);
}
return ;
}

分类讨论

Gym - 102307D Do Not Try This Problem的更多相关文章

  1. Gym 101194A / UVALive 7897 - Number Theory Problem - [找规律水题][2016 EC-Final Problem A]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  2. 【Gym 100685J】Just Another Disney Problem(交互/排序)

    第一次做交互题. 题意是有n个数(n<1000),你通过问1 a b,后台返回你YES代表a<b,NO代表a>b.要你在10000次询问内给出一个符合的排列.n=1000来说,100 ...

  3. Gym 100096D Guessing game

    Gym 100096D Guessing game 题面 Problem Description Byteman is playing a following game with Bitman. Bi ...

  4. Gym - 101667H - Rock Paper Scissors FFT 求区间相同个数

    Gym - 101667H:https://vjudge.net/problem/Gym-101667H 参考:https://blog.csdn.net/weixin_37517391/articl ...

  5. 暑假集训-WHUST 2015 Summer Contest #0.2

    ID Origin Title 10 / 55 Problem A Gym 100625A Administrative Difficulties   4 / 6 Problem B Gym 1006 ...

  6. 暑假集训-WHUST 2015 Summer Contest #0.1

    ID Origin Title   4 / 12 Problem A Gym 100589A Queries on the Tree 14 / 41 Problem B Gym 100589B Cou ...

  7. 多校联训 DS 专题

    CF1039D You Are Given a Tree 容易发现,当 \(k\) 不断增大时,答案不断减小,且 \(k\) 的答案不超过 \(\lfloor\frac {n}{k}\rfloor\) ...

  8. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset

    Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...

  9. Codeforces Gym 100342C Problem C. Painting Cottages 转化题意

    Problem C. Painting CottagesTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...

随机推荐

  1. docker部署mysql,nginx,php,并上传镜像到私有仓库

    前言 最近公司准备把现有环境全部搞成容器化,所以笔者就先了解了一下docker,并搞了一搞,并把自己搞的过程记录下来.话不多说直接开干 环境说明 Centos7 Docker version 18.0 ...

  2. 【win10】 ffmpeg的安装

    安装肯定要先下载,官方下载地址:http://www.ffmpeg.org/download.html 然后会进入这个页面. 然后根据你的操作系统选择 根据自己系统选择,我的系统是64位的所以下载的是 ...

  3. SpringBoot 第二篇:SpringBoot配置文件使用

    背景 项目跑起来,和以前相比,现在的配置文件能干什么?SpringBoot 项目的配置文件就是创建项目时,自带的 application.properties ,打开里面空空如也.这个文件里面的语法是 ...

  4. poj 3253 哈夫曼贪心

    http://poj.org/problem?id=3253 题意: FJ需要修补牧场的围栏,他需要 N 块长度为 Li 的木头(N planks of woods).开始时,FJ只有一块无限长的木板 ...

  5. (九)二进制文件在webservice中的处理(以DataHandler方式)

    一.需求 1. 客户端从服务端下载附件 2. 客户端上传附件到服务端 二.案例 本章通过DataHander的方式来进行传递. 注意:   1:接口中要定义@MTOM 2:方法中要使用@XmlMime ...

  6. Java InterpolationSearch

    Java InterpolationSearch /** * <html> * <body> * <P> Copyright 1994-2018 JasonInte ...

  7. VBA决策(十)

    决策允许程序员控制脚本或其中一个部分的执行流程.执行由一个或多个条件语句控制.以下是在大多数编程语言中找到的典型决策结构的一般形式. VBA提供了以下类型的决策声明. 点击以下链接来查看它们的详细信息 ...

  8. 把zTree前的展开收起图标改为三角形,且只有在点击三角形图标时才展开子节点解决方案

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta ht ...

  9. CentOS7安装CDH 第三章:CDH中的问题和解决方法

    相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...

  10. NORDIC ble RSSI

    static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context) { ret_code_t err_code; sw ...