【笔试训练】day22

1.添加字符

求最少不相等的位数,可以先求最多相等的位数。

在添加字符之前,A和B最多相等的位数是多少?由于A后面可以添加字符,也就使得A字符可以在B的任意一个位置开始比较。遍历一遍这个比较的起点,从这个起点开始跟A比较,看有多少相等的。用一个变量维护这个添加字符前最多相等的数量。

添加字符后呢?由于是可以添加任何字符,我们默认添加多少,就有多少个相等,即两个字符的长度差。

代码:

#include <iostream>
#include<vector>
#include<string>
using namespace std;

int main(){
   string a;
   string b;
   cin>>a>>b;
   int n1=a.size();
   int n2=b.size();
 
    int ans=0;
   for(int i=1;i+n1-1<=n2;i++){
    int pos=i;
    int cnt=0;
    for(int j=1;j<=n1;j++,pos++){
        if(a[j-1]==b[pos-1]){
           cnt++;
        }
    }
    ans=max(ans,cnt);
   }
   cout<<n2-(n2-n1+ans)<<endl;
    return 0;
}

2.数组变换

排个序,遍历一遍数组,看当前元素的前一个元素是否能通过不断乘2来等于它。如果不能就直接NO

代码:

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;

typedef long long LL;

bool isfun(LL x,LL y){
    if(x==y)return true;
    int p=2;
    while(x<y){
        x=x*p;
    }
    if(x==y)return true;
    return false;
}
int main() {
    int n;
    cin>>n;
    vector<int> a(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
    }

    sort(a.begin(),a.end());
    int f=0;
    for(int i=1;i<n;i++){
       if(!isfun(a[i-1],a[i])){
           f=1;
           break;
       }
    }
    if(f)cout<<"NO"<<endl;
    else cout<<"YES"<<endl;
    return 0;
}

3.装箱问题

最小剩余空间,即v-最大利用空间。

01背包,只不过最大价值变成了最大利用空间。换一下值而已。

代码:

#include <iostream>
#include<vector>
using namespace std;
int main() {
    int v;
    int n;
    cin>>v>>n;
    vector<int> a(n+1);
    vector<vector<int>> f(n+1,vector<int>(v+1));
    for(int i=1;i<=n;i++)cin>>a[i];

    for(int i=1;i<=n;i++){
        for(int j=0;j<=v;j++){
             if(j>=a[i])f[i][j]=max(f[i-1][j-a[i]]+a[i],f[i-1][j]);
             else f[i][j]=f[i-1][j];
        }
    }
    cout<<v-f[n][v];
    return 0;
}

相关推荐

  1. 算法训练day22

    2024-05-11 09:28:08       29 阅读
  2. 算法训练day22, 回溯2

    2024-05-11 09:28:08       57 阅读
  3. 算法训练Day23

    2024-05-11 09:28:08       66 阅读
  4. 算法训练Day24

    2024-05-11 09:28:08       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 09:28:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 09:28:08       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 09:28:08       82 阅读
  4. Python语言-面向对象

    2024-05-11 09:28:08       91 阅读

热门阅读

  1. 在Ubuntu下搭建自己的以太坊私有链

    2024-05-11 09:28:08       35 阅读
  2. 使用Azure云服务部署你的第一个应用

    2024-05-11 09:28:08       35 阅读
  3. rk3588 安卓13 暴露相机开关接口

    2024-05-11 09:28:08       30 阅读
  4. 通配符&&正则表达式(RegEXP)

    2024-05-11 09:28:08       30 阅读
  5. 正则表达式高级用法

    2024-05-11 09:28:08       33 阅读
  6. nginx_01

    nginx_01

    2024-05-11 09:28:08      24 阅读
  7. 处理HTTP请求的服务器

    2024-05-11 09:28:08       25 阅读
  8. mysql数据库配置(my.ini|my.cnf)文件参数详细介绍

    2024-05-11 09:28:08       25 阅读