题解:

预处理每一个要变换几次,然后改成每一个要改变的次数-上一个要改变的次数

然后对于区间[l,r]修改,就是l++,r+1++

dp即可(据说可以o(n))

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=;
int a[N],add[N],Dec[N],pr[N],Aft[N],f[N*],n,m;
char s[N],t[N];
int read()
{
char rx=getchar();
int ra=;
for(;rx<''&&rx!='-';rx=getchar());
for(;rx>=''&&rx<='';ra=ra*+rx-,rx=getchar());
return ra;
}
int MOD(int x)
{
return x<?x+:x>?x-:x;
}
int main()
{
for(int T=read();T;T--)
{
scanf("%s%s",s+,t+);
n=strlen(s+);
for(int i=;i<=n;i++)
{
a[i]=MOD(t[i]-s[i]);
add[i]=MOD(a[i]-a[i-]);
Dec[i]=-add[i];
pr[i]=pr[i-]+add[i];
}
for(int i=n;i;i--)
Aft[i]=Aft[i+]+Dec[i];
memset(f,,(pr[n]+)<<);
f[]=;
for(int i=;i<=n;i++)
if(add[i])
{
int tmp=Dec[i],j,k;
for(j=pr[i],k=j-add[i];k>=;j--,k--)
f[j]=min(f[j]+tmp,f[k]);
while(j>=)f[j--]+=tmp;
}
int ans=1e9;
for(int i=;i<=pr[n]&&i<ans;i++)
ans=min(ans,max(i,f[i]));
printf("%d\n",ans);
}
}

51nod1537的更多相关文章

  1. 51nod-1537 1537 分解(矩阵快速幂+找规律)

    题目链接: 1537 分解  问(1+sqrt(2)) ^n  能否分解成 sqrt(m) +sqrt(m-1)的形式  如果可以 输出 m%1e9+7 否则 输出no Input 一行,一个数n.( ...

  2. [51NOD1537] 分解(递推,矩阵快速幂)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1537 思路:一开始用二项式拆了一下,发现这个式子的形式总能变成 ...

  3. 51nod1537 分解

    http://blog.csdn.net/qingshui23/article/details/52350523 详细题解%%%%对矩阵乘法的不熟悉.以及不会推公式 #include<cstdi ...

随机推荐

  1. Win32 实现 MFC CFileDialog 对话框

    void CWriteWnd::OpenFileDialog() { OPENFILENAME ofn; TCHAR szFile[MAX_PATH] = _T(""); Zero ...

  2. Python3基础 dict keys+values 循环打印字典中的所有键和值

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  3. Bootstrap 使用教程 与jQuery的Ajax方法

    jQuery.ajax(url,[settings]) 更加详细的内容参考    jQuery API 中文在线手册 概述 通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单 ...

  4. Java 多线程中的任务分解机制-ForkJoinPool,以及CompletableFuture

    ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行:当多个“小任务”执行完成之后,再将这些执行结果 ...

  5. BZOJ1355: [Baltic2009]Radio Transmission KMP

    Description 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. Input 第一行给出字符串的长度,1 < L ≤ 1, ...

  6. 哈希表-java

    import java.util.HashMap; import java.util.Iterator; public class JavaHashMap { public static void m ...

  7. SQLServer中对时间和长度的处理

    ---关于时间处理的函数 GETDATE() DATEADD(DAY,-20,GETDATE()) CONVERT(VARCHAR(100), GETDATE(), 112) DATENAME(PAR ...

  8. 模型层model layer

    题外话: Django的教程写到这里,就进入了整体的第二部分,也是最关键的部分.此时有一个问题必须想清楚,那就是,以项目带动内容还是以参考书目的方式展开?为此,我考虑了很久. 我在开始学习Django ...

  9. python将xml转换成json数据

    # -*- coding: utf-8 -*- import requests import xmltodict import json def get_response(request_url): ...

  10. 一个很棒的Flutter学习资源列表

    目录 文章 一开始 HOWTO文档 网站/博客 高级 视频 组件 演示 UI 材料设计 图片 地图 图表 导航 验证 文字和富文本 分析.流量统计 自动构建 风格样式 媒体 音频 视频 语音 存储 获 ...