首页 > 其他分享 >1.22-1.28 部分补题

1.22-1.28 部分补题

时间:2024-01-28 17:11:07浏览次数:20  
标签:int res s1 1.28 补题 ans 1.22 id mod

[蓝桥杯 2016 省 A] 密码脱落

题意:给定一个回文串,但是有一些字母消失不见了。

问:至少补全多少个字母,使得字符串变回回文串

最开始想一个一个枚举,但是无论怎么写都是错的。

后来被提醒回文串的特性,反转之后还是一样的。

所以要求最少的需要补全的字母,直接求一个正着和反着的字符串的最长公共子序列就行。

 

void solve() {
    string s1,s2;
    cin >> s1;
    int n = s1.size();
    s2 = ' ' + s1;
    reverse(s1.begin() , s1.end());
    s1 = ' ' + s1;
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=n;j++) {
            f[i][j] = max(f[i-1][j] , f[i][j-1]);
            if(s1[i]==s2[j]) f[i][j] = max(f[i][j] , f[i-1][j-1]+1);
        }
    }
    cout << n-f[n][n] << endl;
}

 

[蓝桥杯 2022 省 A] 爬树的甲壳虫

甲虫从 i-1 的位置爬到 i 有 Pi 的概率失败。问甲虫爬到树顶的期望值是多少

是个dp递推式,用到了几何概型求期望。

E(x) = 1 / (1 - p)

对于每一步,如果当前一步要前往下一步,可能会掉回去,也可能走上去。

res = (res+1) * 1 / (1 - x/y)。代码如下:

int ksm(int base,int power, int mod) {
    int ans=1;
    while(power) {
        if(power & 1) ans = ans * base % mod;
        base = base * base % mod;
        power >>= 1;
    }
    return ans;
}

void solve() {
    int n;
    cin >> n;
    int res = 0 , mod = 998244353;;
    for(int i=1;i<=n;i++) {
        int x,y;
        cin >> x >> y;
        res=(res+1)*y%mod*ksm(y-x,mod-2,mod)%mod;
    }
    cout << res << endl;
}

 

PTA:锦标赛

用的胜者树的另一点:败者树

利用两个数组存储值,一个数组存放当前下标值,另一个数组存放当前下标右边的可放置坐标。

然后利用满二叉树的性质,一层一层的往上的递推,若当前位置的两个子节点都不满足条件,输出no

否则更新当前点的值,可放置下标值和最大值。

void solve() {
    int n;
    cin >> n;
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=(1<<(n-i));j++) {
            cin >> k[i][j];
            if(i==1) {
                ans[j*2-1]=k[i][j] , id[i][j]=j*2;
            }
            else {
                int maxx = max({k[i][j],k[i-1][j*2-1],k[i-1][j*2]});
                if(k[i][j]<k[i-1][j*2-1] && k[i][j]<k[i-1][j*2]) {
                    cout << "No Solution" << endl;
                    return ;
                }
                if(k[i][j]>=k[i-1][j*2]) {
                    ans[id[i-1][j*2]]=k[i][j];
                    id[i][j]=id[i-1][j*2-1];
                }
                else {
                    ans[id[i-1][j*2-1]]=k[i][j];
                    id[i][j]=id[i-1][j*2];
                }
                k[i][j]=maxx;
            }
        }
    }
    int w;
    cin >> w;
    if(k[n][1]>w) {
        cout << "No Solution" << endl;
        return ;
    }
    ans[id[n][1]]=w;
    for(int i=1;i<=(1<<n);i++) cout << ans[i] << " \n" [i==(1<<n)];
}

 

CF:

C. Engineer Artem

给出一个原数组,要求一个新数组

新数组的值要么等于该值,要么等于该值加一

只需要让每个紧邻的数奇偶性不同就行了。

但是我当时在傻傻的去想枚举脑子宕机了属于是。

void solve() {
    int n,m;
    cin >> n >> m;
    vector<vector<int>> k(n+10,vector<int>(m+10));
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=m;j++) cin >> k[i][j];
    }
    for(int i=2;i<=n;i++) {
        if(k[i-1][1]&1) {
            if(k[i][1]&1) k[i][1]++;
        }
        else {
            if(k[i][1]%2==0) k[i][1]++;
        }
    }
 
    for(int j=2;j<=m;j++) {
        if(k[1][j-1]&1) {
            if(k[1][j]&1) k[1][j]++;
        }
        else {
            if(k[1][j]%2==0) k[1][j]++;
        }
    }
 
    for(int i=2;i<=n;i++) {
        for(int j=2;j<=m;j++) {
            if(k[i-1][j]&1 && k[i][j-1]&1) {
                if(k[i][j]&1) k[i][j]++;
            }
            else if(k[i][j]%2==0) k[i][j]++;
        }
    }
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=m;j++) cout << k[i][j] << (j==m ? endl : ' ');
    }
}

 

标签:int,res,s1,1.28,补题,ans,1.22,id,mod
From: https://www.cnblogs.com/lzywakaka/p/17993028

相关文章

  • 24.1.28(读后感)
    今天看了构建之法的第一章,有一些心得体会。在这一章中,作者为我们介绍了一些关于软件工程的基本知识。①软件=程序+软件工程:正是因为对软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容的完成,才能完成把整个程序转化成为一个可用的软件的过程。扩展的......
  • INFINI Labs 产品更新 | 统一版本号 1.22.0
    INFINILabs产品又更新啦~,包括Console,Gateway,Loadgen,Agent1.22.0。为了避免版本不同带来的困扰,以后发布均统一版本号,此次版本重点修复历史遗留Bug、优化内存占用等。以下是本次更新的详细说明。INFINIConsolev1.22.0INFINIConsole是一款非常轻量级的多集群、跨版本的搜......
  • 1.28
    以下是开发医疗保险欺诈识别监测模型的一般性步骤:数据集分析与预处理:对给定的16000条数据集进行初步分析,了解数据的结构、特征。进行数据清洗,处理缺失值、异常值等。进行多维特征信息分析,以了解医疗保险欺诈的潜在特征。特征工程:提取能够描述医疗保险欺诈的特征因子......
  • (2024.1.22-2024.1.28)C语言学习小结
    本周主要围绕《HeadfirstC》这本书展开C语言学习,按照计划,我学习了前四章的内容。基本内容以下时学习做的思维导图(笔记)第1章虽然做的是思维导图,但实际上因为大多数内容已经掌握,所以实际上就是补充记了几个零散的点。第2、2.5章主要是指针、数组、字符串的内容,大多也已经......
  • 牛客练习赛121补题
    C.思路由于水滴会影响一个区间里的水滴,所以只需要为何区间[l,r]即可ac代码#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;consti64inf=1e18;typedefpair<int,int>pii;constintmod=1e9+7;constintN=2e5+10;inta[N];intn......
  • 01.22 ARC170 题解慢报
    补完了,来发题解慢报。AB就不写了。CPrefixMexSequence考虑DP,\(f(i,j)\)表示前\(i\)个数,填了\(j\)个不同的数。如果\(s_{i+1}=1\)那么这位唯一确定,只需要保证\(j<m\)即可转移到\(f(i+1,j+1)\);如果\(s_{i+1}=0\)那么可以选旧的数也可以选新的数,分别转移即可。D......
  • Go 语言中高效切片拼接和 GO 1.22 提供的新方法
    linux模拟资源占用你会吗点击关注......
  • 二进制部署企业级K8S 1.28.3集群实战
    目录前置知识:部署Kubernetes集群的方式一.K8S二进制部署准备环境1.集群角色划分2.所有节点安装常用的软件包3.k8s-master01节点免密钥登录集群并同步数据4.所有节点Linux基础环境优化5.所有节点升级Linux内核并更新系统6.所有节点安装ipvsadm以实现kube-proxy的负载均衡7.修改en......
  • 2024.1.22
    1.Throwable类方法(1)publicStringgetMessage()返回发生的异常的详细信息(2)publicThrowablegetCause()返回一个Throwable对象代表异常原因(3)publicStringtoString()返回此Throwable的简短描述(4)publicvoidprintStackTrace()将此Throwable及其回溯打印到标准错......
  • JAVA 学习心得1.22
    JAVA学习1:一、一些小知识1.计算机由软件硬件组成软件—平时用的app等。硬件—鼠标键盘等。2.Java之父——詹姆斯·高斯林,由SUN公司研发。3.使用需要JDK工具包,调整Java环境,PATH等。4.Java具有跨平台性,简单来说就是很多平台都能够运行和编译java语言的文件。二、一切的......