20220323华为笔试

2023-05-16

1

#include <vector>
#include <queue>
#include <iostream>

using namespace std;

int help(vector<int>& num){
    vector<bool> is_used(num.size(), false);
    queue<int> q;
    q.push(0);
    is_used[0] = true;
    int cnt = 0;

    while(q.size()){
        int s = q.size();
        cnt ++;
        while(s --){
            int t = q.front();
            q.pop();
            for(int i=t; i<= t+num[t]; i++){
                if(i == num.size() - 1) return cnt;
                if(! is_used[i]) {
                    q.push(i);
                    is_used[i] = true;
                }
            }
        }
    }
    return cnt;
}


int main()
{
    int n; scanf("%d", &n);
    vector<int> vec;
    for(int i=0; i<n; i++){
        int t; 
        scanf("%d", &t); 
        vec.push_back(t);
    }


    int ans = help(vec);

    int k; scanf("%d", &k);
    if(ans > k) ans = -1;
    printf("%d\n", ans);
    return 0;
}

/*

5
2 0 1 0 3
2

 6
 2 1 5 6 2 3
 3



 */

2

#include <vector>
#include <queue>
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;


int to_int(char &a, char &b){

    int x, y;
    if('A' <= a && a <= 'F') x = a - 'A' + 10;
    else x = a - '0';

    if('A' <= b && b <= 'F') y = b - 'A' + 10;
    else y = b - '0';

//    cout << a << " " << b << " " << x * 16 + y << endl;
    return x * 16 + y;
}

int main(){
    string s; cin >> s;
    int n; cin >> n;

    vector<int> num(n, 0);
    for(int i=0; i<n; i++){
        cin >> num[i];
    }

    sort(num.begin(), num.end());

    int idx = 0;
    for(int i=0; i<num.size(); i++){
        if(idx + 1 < s.size()
            && to_int(s[idx], s[idx+1]) == num[i]){
                idx += 2;
                int len = to_int(s[idx], s[idx+1]);
                idx += 2;
                int offs = idx / 2;
                idx += len * 2;
                cout << len << " " << offs << "\n";
        }else{
            cout << "0" << " " << "0\n";
        }
    }

}

/*

0F04ABABABAB
1
15


0F04ABABABAB1001FF
2
15
17

 */

3

#include <vector>
#include <queue>
#include <iostream>
#include <string>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>

using namespace std;


struct ItemA{
    int id;
    int vol;
    unordered_set<int> fset;

    ItemA(int id, int vol) : id(id), vol(vol){}

    bool operator < (const ItemA& oth) const{
        if(fset.size() < oth.fset.size()) return true;
        else if(fset.size() > oth.fset.size()) return false;
        else{
            if(vol < oth.vol) return false;
            else return true;
        }

        return true;
    }

    bool operator > (const ItemA& oth) const{
        if(fset.size() < oth.fset.size()) return false;
        else if(fset.size() > oth.fset.size()) return true;
        else{
            if(vol < oth.vol) return true;
            else return false;
        }

        return true;
    }
};

struct ItemB{
    int id;
    int cate;
    ItemB(int id, int cate):id(id), cate(cate){}
};


unordered_map<string, int> cateory;
int cidx = 0;

int main(){
    int m, n, x; cin >> m >> n >> x;

    priority_queue<ItemA, vector<ItemA>, greater<ItemA>> ppp1;
    priority_queue<ItemA, vector<ItemA>, greater<ItemA>> ppp2;


    for(int i=0; i<m; i++){
        ItemA t(i, x);

        string s;
        while(cin >> s){
            if(cateory.count(s) == 0) cateory.insert({s, ++cidx});

            t.fset.insert(cateory[s]);
            ppp1.push(t);

            if(cin.get() == '\n') break;
        }
    }

    vector<ItemB> vb;
    for(int i=0; i<n; i++){
        string s; cin >> s;

        if(cateory.count(s) == 0){
            cout << false << endl;
            return 0;
        }

        ItemB t(i, cateory[s]);
        vb.push_back(t);
    }

    vector<vector<int>> ans(m, vector<int>(n, 0));

    for(int i=0; i<vb.size(); i++){
        ItemB &x = vb[i];

        bool flag = false;

        while(ppp1.size()){
            ItemA y = ppp1.top();
            ppp1.pop();
            if(y.fset.count(x.cate)) {
                ans[y.id][x.id] = 1;
                y.vol -= 1;

                if(y.vol > 0) ppp2.push(y);
                flag = true;
                break;
            }else{
                ppp2.push(y);
            }
        }

        if(flag == false) {
            cout << "false" << endl;
            return 0;
        }

        while(ppp2.size()){
            ItemA t = ppp2.top(); ppp2.pop(); ppp1.push(t);
        }
    }

    cout << "true\n";

    for(int i=0; i<m; i++){
        for(int j=0; j<n; j++){
            cout << ans[i][j] << " ";
        }
        cout << "\n";
    }
}
// 每次取种类数最小,剩余数最大的数字


/*

4 6 4
jav cpp py
py
cpp jav
py
jav
py
cpp
py
cpp
jav

 */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

20220323华为笔试 的相关文章

  • 图像算法之图像平移

    在图像处理领域中 xff0c 图像变换是最基本的算法 xff0c 本文主要详细分享一下图像平移算法的原理和代码实现 xff0c 废话不多说 xff0c 直接上干货 1 图像平移的原理 在计算机图像中 xff0c 主要是用的是 像素直角坐标系
  • OpenCV之Mat的详细介绍

    在opencv中 xff0c Mat作为图像的存储容器 xff0c 是非常基础也是非常重要的知识 xff0c 本文主要介绍Mat相关的操作 1 图像复制 再开始将拷贝之前 xff0c 先给大家分享一下浅拷贝和深拷贝 浅拷贝 xff1a 拷贝
  • windows下Linaro-arm-linux编译开启NEON的Opencv源码详细过程

    环境配置 1 windows安装cmake 下载地址 xff1a https cmake org download 按照上图中的下载cmake的安装包 xff0c 安装注意事项如下 xff1a 安装路径切记不能包含空格 xff01 xff0
  • Windows 工具之net

    net 是windows平台下用户管理的工具 xff0c 可以来添加 xff0c 删除和修改用户 1 创建用户 xff1a win 43 R 输入cmd xff0c 然后打开命令行窗口 xff0c 输入下面的命令 xff1a net use
  • windows平台相关命令收集

    1 获取IP地址命令 xff1a ipconfig 2 获取MAC地址命令 xff1a ipconfig all 3 查看所有端口信息 netstat nal findstr 8080
  • C/C++中比较好用的HTTP开源库

    以下是一些常用的C C 43 43 开源HTTP库及其对应的开源协议和链接 xff1a 1 libcurl xff1a 使用MIT X开源协议 xff0c 支持多种协议和多种数据传输方式 xff0c 被广泛应用于各种开发场景 官网链接 xf
  • 为Ubuntu网页设置稳定的数据隧道

    网站作为互联网世界中的一个个门户 xff0c 是我们对外表达的窗口 xff0c 无数个人和企业通过这个窗口传递着信息 xff0c 这个传递信息的窗口必须稳定持续存在 xff0c 才能让更多访客看到 xff0c 为我们带来更多的流量 而使用c
  • VisualStudio配置与Matlab混合编译问题总结

    VisualStudio配置与Matlab混合编译问题总结 写这篇博客记录一下自己在配置过程中遇到的种种问题 xff0c 也做一个小小总结 xff0c 试图把整个过程讲明白 xff0c 希望对面临同样问题的人有所帮助 网上此类教程很多 xf
  • C++与C的区别(作业)

    头文件的区别 1 C 43 43 中创建源文件后缀为 cpp xff0c C语言中创建源文件后缀为 c xff0c 头文件保持不变 xff0c 后缀为 h 2 包含自己的头文件 xff0c C语言与C 43 43 无区别 包含库目录 xff
  • C++和C语言区别(二)附二级指针的动态内存申请

    结构体区别 1 定义结构体与C语言一致 2 定义变量可省略关键字struct 3 C 43 43 结构体中允许函数存在 xff08 C 43 43 在没有写构造函数和权限限定的时候 xff0c 用法和C语言一致 xff09 xff08 1
  • 自制芯片 http转串口通信模块实现手机控制加红外控制51单片机实现双控制 28BYJ-48步进电机( 13003步进电机驱动器 STC89C52RC ESP8266)

    首先你有这样的8266 这种8266自身带2个按键和烧录芯片方便调试 xff0c 综合性价比较高 还需要有一个51单片机 或者其他单片机都行 还有就是需要这样的13003步进电机驱动器 43 28BYJ 48步进电机和红外接收头以及遥控器
  • C++类和对象(附C语言与C++链表)

    类和对象的基本概念 1 类 xff1a 一系列事物的抽象 xff0c 万物皆可为类 xff08 1 xff09 属性 xff1a 事物的特征 数据类型的描述 xff08 2 xff09 行为 xff1a 事物的操作 函数描述 2 对象 xf
  • C++类的组合

    1 以另一个类的对象为数据成员 xff0c 必须采用初始化参数列表的写法 include lt iostream gt include lt string gt using namespace std class Boy public Bo
  • C++模板

    函数模板 1 把类型当作未知量 2 语法 template lt typename Ty gt Ty function Ty a Ty b return a gt b a b template lt class Ty1 class Ty2
  • C++STL容器(一)

    定长数组 include lt iostream gt include lt string gt include lt array gt using namespace std template lt class Ty size t siz
  • C++STL容器(二)

    链表 include lt iostream gt include lt string gt include lt list gt include lt functional gt 仿函数less和greater头文件 using name
  • C++正则表达式

    regex match regex replace regex search include lt iostream gt include lt regex gt include lt string gt using namespace s
  • C++时间管理和随机数

    时间段 include lt chrono gt duration TYPEDEFS typedef duration lt long long nano gt nanoseconds 纳秒 typedef duration lt long
  • C++文件系统

    filesystem include lt filesystem gt include lt iostream gt using namespace std int main 打开文件夹 filesystem path url 34 fil
  • arduino之旅——L298N驱动小车前进后退

    今天开始组装小车 xff0c 但是把小车底板 xff0c arduino mega 2560芯片 xff0c L298N xff0c 减速电机 xff0c 还有电源相应地连接好后 xff0c 从网上找了如下程序 xff08 源程序来自 xf

随机推荐