首页 > 其他分享 >机试重点题-2019

机试重点题-2019

时间:2024-03-21 20:25:31浏览次数:19  
标签:return cout int price 2019 机试 include 重点 row

B:数字配对

考察:map容器的应用

#include <iostream>
#include <algorithm>
#include <map>

using namespace std;

int n;
map<int, int> mp;

int main()
{
    cin >> n;
    
    for(int i = 0; i<n; i++)
    {
        int temp;
        cin >> temp;
        mp[temp] ++;
    }
    
    map<int, int> :: iterator itor = mp.begin();
    
    while(itor != mp.end())
    {
        if(itor->second % 2 != 0)
        {
            cout << itor->first << endl;
            break;
        }
        itor++;
    }
    return 0;
}
/*
13
2 5 1 3 5 2 5 1 4 1 4 5 1
ouput:3
5
12345 123456789 1234567 123456789 12345
ouput:1234567
*/
View Code

 

D:修路的最小代价

考察:最小生成树

Kruskal算法解决:

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 10010, M = 20010;
int n, m;
int h[N], e[M], ne[M], idx;
int p[N];

struct Edge{
    int a, b, w;
}edges[M];

void add(int a, int b)
{
    e[idx] = b;
    ne[idx] = h[a];
    h[a] = idx++;
}

bool cmp(Edge a, Edge b)
{
    return a.w < b.w;
}

int find(int x)
{
    if(p[x] != x) p[x] = find(p[x]);
    return p[x];
}

int kruskal()
{
    sort(edges, edges + m, cmp);
    int res = 0, cnt = 0;
    
    for(int i = 0; i<m; i++)
    {
        int a = edges[i].a;
        int b = edges[i].b;
        int w = edges[i].w;
        
        a = find(a), b = find(b);
        
        if(a != b)
        {
            p[a] = b;
            cnt ++;
            res += w;
        }
    }
    
    if(cnt == n - 1) return res;
    else return -1;
}

int main()
{
    memset(h, -1, sizeof h);
    cin >> n >> m;
    
    for(int i = 0; i<n; i++) p[i] = i;
    
    for(int i = 0; i<m; i++)
    {
        int a, b, w;
        cin >> a >> b >> w;
        add(a, b), add(b, a);
        edges[i] = {a, b, w};
    }
    
    int t = kruskal();
    cout << t << endl;
    
    return 0;
}
/*
5 8
0 1 5
0 2 1
0 3 2
1 2 3
2 3 6
4 1 4
4 2 2
4 3 3
ouput:
8
*/
View Code

 

E:炮台放置

 考察:DFS

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 1010, M = 1010;
char g[N][M];
int n, m;
int cnt = 0, max_cnt = 0;

void place(int row, int col)
{
    //向上扫描
    for(int i = row - 1; i>0; i--) {
        if(g[i][col] == 'p') return;
        if(g[i][col] == 'x') break;
    }
    //向下扫描
    for(int i = row + 1; i<=n; i++) {
        if(g[i][col] == 'p') return;
        if(g[i][col] == 'x') break;        
    }
    //向左扫描
    for(int j = col - 1; j>0; j--)
    {
        if(g[row][j] == 'p') return;
        if(g[row][j] == 'x') break;
    } 
    //向右扫描
    for(int j = col + 1; j<=m; j++){
        if(g[row][j] == 'p') return;
        if(g[row][j] == 'x') break;
    }
    
    g[row][col] = 'p'; 
    cnt ++; //可放炮台数加1 
    max_cnt = max(max_cnt, cnt);//更新最大炮台数 

    
    for(int i = 1; i<=n; i++)
        for(int j = 1; j<=m; j++)
            if(g[i][j] == '.')
                place(i, j); //只要是个.就尝试放炮
    
    g[row][col] = '.'; //恢复现场,进行下一轮放置
    cnt --; 
}

int main()
{
    cin >> n >> m;
    
    for(int i = 1; i<=n; i++)
        for(int j = 1; j<=m; j++)
            cin >> g[i][j];

    for(int i = 1; i<=n; i++)
        for(int j = 1; j<=m; j++)
            if(g[i][j] == '.')
                place(i, j);
    
    cout << max_cnt << endl;
                
    return 0;
}
/*
4 4
.x..
....
x...
....

2 2
.x
x.

5 5
.....
.x..x
..x..
.....
.x...
*/
View Code

 

 

F:饭卡

HDU2546 原题

考察:贪心 + 背包

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;
const int N = 1010, M = 1010;

int n, m, k;//菜数量,余额,输入组数 
int f[N][M]; //f[i][j]:在余额为j的情况下,从前i道菜里购买所能花费的最大方案 
int price[N];

int main()
{
    while(cin >> n && n != 0)
    {
        for(int i = 1; i<=n; i++) cin >> price[i];
        cin >> m;
        if(m < 5)
        {
            cout << m << endl; //钱不够,余额还是m
            continue;
        }
        
        sort(price, price + n + 1);
        //注意题设条件,每购买一件商品之前先判断有没有五块钱 
        int max_price = price[n];
        m -= 5; //先花5元钱买最贵的菜,根据题目条件一定可以买成功 
        //剩余的钱再用01背包解决 
        for(int i = 1; i<=n-1; i++){
            for(int j = 5; j<=m; j++) {
                f[i][j] = f[i - 1][j];
                if(j >= price[i])
                    f[i][j] = max(f[i][j], f[i - 1][j - price[i]] + price[i]);
            }
        }
        //之前m花了5元钱买了最贵的菜要加回来
        //再减去买的最贵的菜价,再减去从前n-1道菜里用"m"(m-5)买菜的价格 
        int remain = m + 5 - price[n] - f[n-1][m];
        cout << remain << endl; 
    }
    
    return 0;
}
/*
1
50
5
10
1 2 3 2 1 1 2 3 2 1
50
0
ouput:
-45
32
*/
View Code

 

标签:return,cout,int,price,2019,机试,include,重点,row
From: https://www.cnblogs.com/GeekDragon/p/18087806

相关文章

  • 机试真题重点题目-2017
    A:连续字母#include<iostream>#include<string.h>#include<algorithm>usingnamespacestd;constintN=110;intn;charstr[N];intmain(){cin>>n;while(n--){scanf("%s",str+1);......
  • 2024. 1华为od机试C卷【传递悄悄话】Python
    题目给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。输入描述0920-1-1157-1-1-1-132注:-1表示空节点输出......
  • 【漏洞复现】1. WebLogic 反序列化漏洞(CVE-2019-2890)复现与分析
    文章目录1.基础知识2.复现2.1漏洞介绍漏洞影响版本:2.2漏洞原理分析2.3漏洞复现2.3.1环境搭建2.3.2漏洞验证2.3.3漏洞利用2.3.4POC分析2.4漏洞修复1.基础知识WebLogic是美国Oracle公司出品的一个applicationserver,确切的说是一个基于JAVAEE架构的中间......
  • Windows Server 2019 Oracle 19c Restore & Recovery
    RMAN>CONNECTTARGET/;RMAN>run{ SQL>shutdownimmediate; startupmountforce; startupmount; setuntiltime"to_date('2024-03-1905:36:58','yyyy-mm-ddhh24:mi:ss')"; restoredatabase; recoverdatabase; al......
  • 华为OD机试真题-推荐多样性-2024年OD统一考试(C卷)
    题目描述:推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略:1. 各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表中为每屏选择一个元素,依次类推2. 每个列表的元素尽量均分为N份,如果不够N个,也......
  • Windows server 2019 英文版镜像和中文版镜像Debian12.4镜像
    Windowsserver2019英文镜像​​​​​​​​​https://sl-m-ssl.xunlei.com/h5/page/download-share/index.html?entry=link&appType=PC&videobtindex=-1&storid=czvvdfq66ast&share_from=leftlist_rk_shareWindowsserver2019英文镜像https://pan.xunlei.com/s/VNtDquO1......
  • Qt+vs2019+PCL1.12.1+VTK9.1环境搭建中的相关问题
    目录1.VS中双击Ui文件无法打开2.VTK9.0以后在QtDesigner中找不到QVTKWidget组件3.无法打开源文件"QVTKOpenGLNativeWidget.h"4.无法打开源文件"QOpenGLWidget"5.QWidget:MustconstructaQApplicationbeforeaQWidget6.无法打开源文件"QtWidgets/QApplicati......
  • 软考高项学习重点总结整理第1章信息化发展
     以下内容均为作者个人根据“往年软考高项考题”及考试重点整理的选择题重要考点。不喜欢看厚厚书本的友友的福音......
  • P8685 [蓝桥杯 2019 省 A] 外卖店优先级
    这道题虽然难度很低,但是细节不少1.要先处理减,再处理加。因为是先经历了空档期的优先级衰减,然后才有订单带来的优先级提升;先减后加的时候有0这个下限兜底,如果先加后减可能会导致答案偏小。2.减之后和加之后都要check一下,如果in_cache为true,减完之后小于等于三,但是加了以后又上升......
  • Windows Server 2019上离线安装.NET Framework 3.5
    1、打开服务器管理器首先,下载sxs文件。然后打开服务器管理器,点击左侧的“仪表盘”,如下图所示。https://chaonb.lanzouw.com/ifOU01rvm7gf密码:666 2、添加角色和功能点击上图中的“添加角色和功能”,弹出下图所示“添加角色和功能向导”。3、选择安装功能一直点击“下......