【JZOJ 5220】【GDOI2018模拟7.10】C

NOIP模拟题 2016.11.7 [DP*3] A 问题描述: 小A得到了一棵美丽的有根树。这棵树由n个节点以及n - 1条有向边构成,每条边都从父亲节点指向儿子节点,保证除了根节点以外的每个节点都有一个唯一的父亲。树上的节点从1到n标号。该树的一棵子树的定义为某个节点以及从该节点出发能够达到的所有节点的集合,显然这棵树共有n棵子树。小A认为一棵有根树是美丽的当且仅当这棵树内节点的标号构成了一个连续的整数区间。现在小A想知道这棵树上共有多少棵 阅读详情

Description

设A、B两字符串的最长公共公共前缀长度为L,那么在A串所有长度为L的子串中,有多少个同时是B的子串。

Solution

把题目改成:“A、B串中所有长度为L的子串,有多少个是两两相同的”,那么这个直接用求最长公共子串的DP加上统计方案数即可,注意细节;

那么这题怎么做呢?
设i,j,k,保证ai=aj,ai=ak,j<k这三个条件
那么有结论:fi,j所记录的方案数是fi,k所记录的子集,这个证明显然。

通过这个结论,我们每次统计ans时只要统计fi,m的方案即可保证题目要求,

复杂度:O(n2)

Code

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define efo(i,q) for(int i=A[q];i;i=B[i][0])
#define min(q,w) ((q)>(w)?(w):(q))
using namespace std;
typedef long long LL;
const int N=1050,mo=1e9+7;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n;
int a[N],b[N];
struct qqww
{
    int v;
    LL f;
}f[N][N],ans;
qqww max(qqww q,qqww w)
{
    if(q.v>w.v)return q;
    if(q.v<w.v)return w;
    q.f=(q.f+w.f)%mo;
    return q;
}
void LG()
{
    fo(i,0,m)f[0][i].f=1;
    f[0][0].f=1;
    fo(i,1,n)
    {
        fo(j,1,m)
        {
            f[i][j]=f[i][j-1];
            if(a[i]==b[j])
            {
                qqww t=f[i-1][j-1];t.v++;
                if(t.v>f[i][j].v)f[i][j]=t;
                else if(t.v==f[i][j].v)f[i][j].f=t.f;
            }
        }
        ans=max(ans,f[i][m]);
        fo(j,1,m)f[i][j]=max(f[i][j],f[i-1][j]);
        f[i][0].f=1;
    }
}
int main()
{
    int q,w;char ch;
    for(ch=getchar();ch<='z'&&ch>='a';ch=getchar())a[++n]=ch-96;
    for(;ch<'a'||ch>'z';ch=getchar());
    for(;ch<='z'&&ch>='a';ch=getchar())b[++m]=ch-96;
    LG();
    printf("%d\n",ans.f);
    return 0;
}
从GAN生成失败案例出发:为什么你的AI画不准位置?CoordConv保姆级解决方案 本文深入探讨了GAN生成图像时位置偏移问题的根源,并提供了CoordConv的保姆级解决方案。通过分析传统CNN在空间坐标建模上的缺陷,详细介绍了CoordConv的原理、实现步骤及在StyleGAN2等模型中的实战应用,显著提升了医学图像生成等任务的定位精度。 阅读详情

相关推荐

二阶FLL辅助三阶PLL环路的代码解读

今天对GNSS接收机里面的载波跟踪环路代码进行了解读 以下是个人的一点见解 % 载波环第二步:环路滤波器 二阶FLL辅助三阶PLL环路 carrLoopS0 = lastCarrLoopS0 + (phaseErr*tau0PLL + freqErr*tau1FLL) * PDIcarr; carrLoopS1 = lastCarrLoopS1 + (tau1PLL*phaseErr + carrLoopS0 + tau2FLL*freqErr) * PD

LWN7321的博客 2629

11月7日——离noip还有12天

11月7日——离noip还有12天 高中第一次这么认真地整理题~~~ 目录 11月7日离noip还有12天 目录 A题 问题描述 代码dfs就可以了 B题 问题描述 题解 标答一 标答二 C题 问题描述 题解 正解 summary 博主郑重承诺以后的博客上一题一图片 本次考试没有用黑科技(random),就GG了; 感觉内心很惶恐,吃枣药丸。 A题 问

lemonoil的博客 907

解决Word中英文混排的5个常见排版问题(含单词换行、间距调整等)

本文详细解析Word中英文混排的5大常见排版问题,包括单词换行、间距调整、标点混用等,提供专业解决方案。通过设置段落格式、调整兼容性选项和使用字体组合等技巧,帮助用户轻松解决文档排版难题,提升专业性和阅读体验。

vim8coder的博客 1336

JZOJ 5221. 【GDOI2018模拟7.10】A

JZOJ 5221. 【GDOI2018模拟7.10】A DescriptionInputOutputSample Input4 2 3 2 1 2 4Sample Output4Data ConstraintSolution 首先,这是一棵有根树,先要找到它的根是哪个节点。 由于边是有向边,入度为零的点就是根节点了。 接着,如何处理出答案呢? 从根节点开始遍历这棵树,

Felix-Lee的博客 450

unity 在透明物体上投射阴影

unity版本:2019.4.16 创建一个shader,代码如下: Shader "ChuckLee/ARShadow" { Properties { _ShadowColor("Shadow Color", Color) = (0.1, 0.1, 0.1, 0.53) } SubShader { Tags{ "RenderType" = "Transparent" "Queue" = "Geometry+1" } Blend SrcAlpha OneMinusSrcAlph

Abel02的博客 2953

28、数字电路测试与半导体内存测试全解析

本文全面解析了数字电路中的顺序电路测试生成方法与半导体内存测试技术。内容涵盖顺序电路中的故障检测、多重观察测试、可驱动性分析、伪组合电路测试及初始化问题,并深入探讨了内存技术发展、故障模型、测试流程与未来趋势。重点介绍了DRAM、SRAM等主流内存类型的特点,以及制造和使用过程中面临的永久性与非永久性故障挑战,提出了基于故障模型的高效测试策略与优化方案。

go5gopher的博客 122

2018.08.29测试

T1 A 题 问题描述: 小 A 得到了一棵美丽的有根树。这棵树由 n 个节点以及 n - 1 条有向边构成,每条边都从父 亲节点指向儿子节点,保证除了根节点以外的每个节点都有一个唯一的父亲。树上的节点从 1 到 n 标号。该树的一棵子树的定义为某个节点以及从该节点出发能够达到的所有节点的集 合,显然这棵树共有 n 棵子树。小 A 认为一棵有根树是美丽的当且仅当这棵树内节点的标号 构成了一个连续...

南瓜の大水库 357

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

noip模拟题11.7

T1 A题问题描述: 小A得到了一棵美丽的有根树。这棵树由n个节点以及n - 1条有向边构成,每条边都从父亲节点指向儿子节点,保证除了根节点以外的每个节点都有一个唯一的父亲。树上的节点从1到n标号。该树的一棵子树的定义为某个节点以及从该节点出发能够达到的所有节点的集合,显然这棵树共有n棵子树。小A认为一棵有根树是美丽的当且仅当这棵树内节点的标号构成了一个连续的整数区间。现在小A想知道这棵树上共有

某炒鸡无底蒟蒻的博客 518

9.13华为OD机试真题 新系统 - 手机桌面整理 (Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【手机桌面整理】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【 手机桌面整理】多语言题解。

qq_45776114的博客 638

【100%通过率】华为OD机试真题 Java&Go 实现【查找单入口空闲区域】【2022.11 Q4 新题】

给定一个 m xn 的矩阵,由若干字符 和0构成,X表示该处已被占据,0"表示该处空闲,请找到最大的单入口空闲区域.解释:空闲区域是由连通的O组成的区域,位于边界的0可以构成入口,单入口空闲区域即有目只有一个位于边界的0作为入口的由连通的'O"组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。

MISAYAONE的博客 2万+

【JZOJ5220】【GDOI2018模拟7.10】C

DescriptionData ConstraintSolution我们设dp[i][j]表示最长公共子序列。正常求。同时我们设f[i][j]表示在满足当前dp[i][j]的情况下前i个x中的子序列有多少是满足是y的子序列。那么我们枚举一下:若当前的子序列中匹配不包括i,那么我们考虑若dp[i-1][j]==dp[i][j],那么f[i][j]+=f[i-1][j]。若当前的子序列中匹配包括i,那么

dance in th dark的博客 584

基于Simulink的永磁同步电机容错控制(缺相容错)

本文基于Simulink平台,详细介绍了永磁同步电机(PMSM)缺相容错控制的仿真实现方法。针对逆变器开路故障导致的缺相问题,提出"检测-重构-补偿"三阶段控制策略:采用电流阈值法快速检测故障(<5ms),重构αβ坐标系实现两相矢量控制,并通过谐波电流注入抑制转矩脉动(<8%)。仿真结果表明,该方法能有效维持故障后电机运行,转速波动<3%,满足电动汽车等关键应用的可靠性需求。文章包含完整的Simulink建模步骤、MATLAB函数代码及参数设置,为工程实践提供了可复现的

xiaoheshang_123的博客 146

jzoj5220 [GDOI2018模拟7.10]C dp

Description n≤1000n≤1000n\leq 1000 Solution 先n^2做一次最长公共子序列,考虑怎么求方案 我们对求出的f数组再做一次dp。设g[i,j]为X的前i个和Y的前j个,最长公共子序列长度为f[i,j]的方案数 若i不匹配,则g[i,j]+=g[i-1][j] 若i匹配,我们从后往前找到第一个X[i]=Y[j]的位置k,g[i,j]+=g...

olahiuj的博客 317

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【jzoj5220】【GDOI2018模拟7.10】【C】【动态规划】

题目大意解题思路dp求lcs很容易,关键是x串的子串只要y有一个对应就贡献1且只贡献1。考虑设g[i][j],x串dp到i,y到j的方案数,加入x串字符时可以直接累加方案数,但需要lcs相同,加入y串字符时不可以累加,同时加入x串字符和y串字符时需要找到y串前j个字符中最后的字符,将这个状态的前一个状态转移到当前状态,即lcs小1的状态。code#include<cstdio> #include<c

inklutcuah’s blog 473

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jzoj5220 【GDOI2018模拟7.10】C (双序列dp)

题意给定字符串A,B,求长度为A,B的最长公共子序列长度 的X串子序列在Y中有出现过的个数。 n<=1000 注意理解题意: 首先是X串的子序列(只要取的位置不同就是不同的子序列),然后长度为两者最长公共子序列的长度,然后有在Y串中出现过,这样就是1的贡献。 并不等价于最长公共子序列的对数!分析先求出f[i][j]表示最长公共子序列的长度。 再设g[i][j]表示只考虑a[1..i],b[1

一位蒟蒻的小博客 498

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JZOJ5220. 【GDOI2018模拟7.10】C(2017.8DP&贪心专题)

Description Input Output Sample Inputaa abSample Output2Data Constraint DP套DP 设f[i][j]为第1个字符串到第i位,第2个字符串到第j位的子序列最长长度 f[i][j]=max(f[i-1][j],f[i][j-1]) if s1[i]=s2[j] f[i

puppywolf的博客 391

【DP】三校联考1017T3

题意: 分析: 考场上这题做了我两个小时。。。果然第一步都错了。。。 首先,所谓的绝对值其实可以用最优性忽略!!!! 即:|a-b|=max(a-b,b-a) 所以,不必考虑到底谁大谁小,在最优策略中,一定是合法的。 然后就很简单了:每一个位置的贡献分别可能为2,0,-2(开头末尾可能为-1,1) 一段连续的2或-2就是一段。这么搞一下DP就行了 #include&lt;cstdio&gt; #...

氧化钠的博客 296

[十二省联考2019]D1T2字符串问题

嘟嘟嘟 省选Day1真是重大失误,T2连暴力都没时间写。 上周五重新答了遍Day1,竟然搞了187分吼吼吼吼。 T2按40分写的暴力,结果竟然得了60分。 稍微说一下暴力吧:预处理哈希,对于一组支配关系\(A_i\), \(B_i\),用哈希判断\(B_i\)是哪些\(A\)串的前缀,是的话就连边\((A_i, A_j)\)。用哈希能做到单次\(O(n)\),因此建图复杂度\(O(n...

weixin_30546189的博客 171

两道很好的dp题目【4.29考试】

A   问题描述:   对于一个排列,考虑相邻的两个元素,如果后面一个比前面一个大,表示这个位置是上升的,用I表示,反之这个位置是下降的,用D表示。如排列3,1,2,7,4,6,5可以表示为DIIDID。   现在给出一个长度为n-1的排列表示,问有多少种1到n的排列满足这种表示。   输入:   一个字符串S,S由I,D,?组成.?表示这个位置既可以为I,又可以为D。   输出: ...

weixin_30821731的博客 292

经典算法——排序算法

冒泡排序 排序原理: 比较相邻的元素,如果前一个元素比后一个元素大,就交换两个元素的位置。 对每一对相邻的元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置为最大值。 冒泡排序API设计 类名 Bubble 描述 构造方法 Bubble() 创建Bubble对象 成员方法 public static void sort(Comparable[] a) 对数组内的元素进行排序 private static boolean grea.

axibazZ的博客 2331

gmoj.5219 【GDOI2018模拟7.10】B

题目 题目描述 对于一个排列,考虑相邻的两个元素,如果后面一个比前面一个大,表示这个位置是上升的, 用 I 表示,反之这个位置是下降的,用 D 表示。如排列 3,1,2,7,4,6,5 可以表示为 DIIDID。 现在给出一个长度为 n-1 的排列表示,问有多少种 1 到 n 的排列满足这种表示。 输入 一个字符串 S,S 由 I,D,?组成。?表示这个位置既可以为 I,又可以为 D。 输出 有多...

_Alexander_的博客 380

【DP】【七中联考】【B】

**B题** 问题描述: 对于一个排列,考虑相邻的两个元素,如果后面一个比前面一个大,表示这个位置是上升的,用I表示,反之这个位置是下降的,用D表示。如排列3,1,2,7,4,6,5可以表示为DIIDID。 现在给出一个长度为n-1的排列表示,问有多少种1到n的排列满足这种表示。 输入: 一个字符串S,S由I,D,?组成。?表示这个位置既可以为I,又可以为D。 输出: 有多少种排列满足上

Star_Weeper的博客 498

【NOIP 2016 提高组】愤怒的小鸟

DescriptionSolution一题很显然的状压DP, 显然的转移是n3n^3的, 优化: 1. 很显然两个点决定一条抛物线后,可以预处理还能打到那些点。 2. 贪心的想,既然一个点迟早要打,为何不现在就打了它,复杂度:O(2n∗n)O(2^n*n)Code#include <iostream> #include <cstdio> #include <cstdlib> #include

1482

【JZOJ 3853】帮助Bsny

DescriptionBsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数。例如,如果书的高度是30,30,31,31,32,那么混乱值为3;30,32,32,31的混乱值也为3。但是31,32,31,32,31的混乱值为5,这实在是太乱了。 Bsny想尽可能减少混乱值,但他有点累了,所以他决定最多取出k本书,再随意将它们放回到书架上。你能帮助

1335

【JZOJ 4599】西行妖

Description 在幻想乡白玉楼有一棵终年不开花的樱树叫西行妖,西行寺幽幽子曾经为了让它开花而大量收集春度,然后被城管教训了一顿… 现在,幽幽子得到城管的允许,收集了S点春度,让西行妖重新开花。 西行妖可以被看成是一棵有n个节点的树,每个叶子节点被分配了1点春度就能开花(幽幽子不会无意义地使用她的春度,于是最多只会给同一个叶子节点分配1点春度),对于非叶子节点i,如果它有至少有1个儿子开花,

1140
上一篇: 【JZOJ 5205】【GDOI2018模拟7.6】仰望星空
下一篇: 【JZOJ 5215】【GDOI2018模拟7.9】组合数问题
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值